MPxManipContainer Class Reference
[OpenMayaUI - API module for user interfaceProxy classes]

#include <MPxManipContainer.h>

Inheritance diagram for MPxManipContainer:

Inheritance graph
[legend]
Collaboration diagram for MPxManipContainer:

Collaboration graph
[legend]

List of all members.


Detailed Description

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.

Examples:

componentScaleManip.cpp, customAttrManip.cpp, footPrintManip.cpp, lineManipContainer.h, moveManip.cpp, rotateManip.cpp, surfaceBumpManip.cpp, and swissArmyManip.cpp.


Public Member Functions

 MPxManipContainer ()
virtual ~MPxManipContainer ()
virtual MPxNode::Type type () const
virtual void draw (M3dView &view, const MDagPath &path, M3dView::DisplayStyle style, M3dView::DisplayStatus status)
virtual MStatus connectToDependNode (const MObject &dependNode)
virtual MStatus createChildren ()
MDagPath addFreePointTriadManip (const MString &manipName, const MString &pointName)
MDagPath addDirectionManip (const MString &manipName, const MString &directionName)
MDagPath addDistanceManip (const MString &manipName, const MString &distanceName)
MDagPath addPointOnCurveManip (const MString &manipName, const MString &paramName)
MDagPath addPointOnSurfaceManip (const MString &manipName, const MString &paramName)
MDagPath addDiscManip (const MString &manipName, const MString &angleName)
MDagPath addCircleSweepManip (const MString &manipName, const MString &angleName)
MDagPath addToggleManip (const MString &manipName, const MString &toggleName)
MDagPath addStateManip (const MString &manipName, const MString &stateName)
MDagPath addCurveSegmentManip (const MString &manipName, const MString &startParamName, const MString &endParamName)
MDagPath addRotateManip (const MString &manipName, const MString &rotationName)
MDagPath addScaleManip (const MString &manipName, const MString &scaleName)
MStatus addMPxManipulatorNode (const MString &manipTypeName, const MString &manipName, MPxManipulatorNode *&proxyManip)
bool isManipActive (const MFn::Type &manipType, MObject &manipObject)
MStatus finishAddingManips ()
virtual MManipData plugToManipConversion (unsigned int manipIndex)
virtual MManipData manipToPlugConversion (unsigned int manipIndex)
void addPlugToManipConversion (unsigned int manipIndex)
unsigned int addManipToPlugConversion (MPlug &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)
MStatus getConverterManipValue (unsigned int manipIndex, double &value)
MStatus getConverterManipValue (unsigned int manipIndex, double &x, double &y)
MStatus getConverterManipValue (unsigned int manipIndex, MPoint &point)
MStatus getConverterManipValue (unsigned int manipIndex, MVector &vector)
MStatus getConverterManipValue (unsigned int manipIndex, MMatrix &matrix)
MStatus getConverterManipValue (unsigned int manipIndex, MEulerRotation &rotation)
MStatus getConverterManipValue (unsigned int manipIndex, MTransformationMatrix &xform)
MStatus getConverterPlugValue (unsigned int plugIndex, double &value)
MStatus getConverterPlugValue (unsigned int plugIndex, double &x, double &y)
MStatus getConverterPlugValue (unsigned int plugIndex, MPoint &point)
MStatus getConverterPlugValue (unsigned int plugIndex, MVector &vector)
MStatus getConverterPlugValue (unsigned int plugIndex, MMatrix &matrix)
MStatus getConverterPlugValue (unsigned int plugIndex, MEulerRotation &rotation)
virtual MStatus doPress ()
virtual MStatus doDrag ()
virtual MStatus doRelease ()

Static Public Member Functions

static MStatus initialize ()
static MPxManipContainernewManipulator (const MString &manipName, MObject &manipObject, MStatus *ReturnStatus=NULL)
static MStatus addToManipConnectTable (MTypeId &)
static MStatus removeFromManipConnectTable (MTypeId &)

Friends

class MFnPlugin

Constructor & Destructor Documentation

MPxManipContainer::MPxManipContainer (  ) 

Constructor.

MPxManipContainer::~MPxManipContainer (  )  [virtual]

Destructor.


Member Function Documentation

MPxNode::Type MPxManipContainer::type (  )  const [virtual]

This method returns the type of the node.

Returns:
MPxNode::kManipContainer

Reimplemented from MPxNode.

MStatus MPxManipContainer::initialize (  )  [static]

This method initializes the manipulator, and should be overriden in user-defined manipulators.

Returns:
Status of the operation. The base class always returns MS::kSuccess.
Examples:

MPxManipContainer * 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.

Parameters:
[in] manipName manipulator name
[in] manipObject manipulator object
Returns:
The new manipulator

void MPxManipContainer::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.

Parameters:
[in] view the view in which to draw
[in] path the current path
[in] style the display appearance
[in] status the display status
Examples:

MStatus MPxManipContainer::connectToDependNode ( const MObject node  )  [virtual]

This method connects the manipulator to the dependency node. This is a virtual method and needs to be overridden from the plug-in.

Parameters:
[in] node the node to which the manipulator should be connected
Returns:
MS::kSuccess if successful, an error status otherwise. The base class returns MS::kFailure if there are no connections between manip values and plug values.
Examples:

MStatus MPxManipContainer::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.

Examples:

MDagPath MPxManipContainer::addFreePointTriadManip ( const MString manipName,
const MString pointName 
)

This method creates a FreePointTriadManip and adds it to the MPxManipContainer container.

Parameters:
[in] manipName manipulator name
[in] pointName point name
Returns:
New FreePointTriadManip

MDagPath MPxManipContainer::addDirectionManip ( const MString manipName,
const MString directionName 
)

This method creates a DirectionManip and adds it to the MPxManipContainer container.

Parameters:
[in] manipName manipulator name
[in] directionName direction name
Returns:
New DirectionManip

MDagPath MPxManipContainer::addDistanceManip ( const MString manipName,
const MString distanceName 
)

This method creates a DistanceManip and adds it to the MPxManipContainer container.

Parameters:
[in] manipName manipulator name
[in] distanceName distance name
Returns:
New DistanceManip

MDagPath MPxManipContainer::addPointOnCurveManip ( const MString manipName,
const MString paramName 
)

This method creates a PointOnCurveManip and adds it to the MPxManipContainer container.

Parameters:
[in] manipName manipulator name
[in] paramName parameter name
Returns:
New PointOnCurveManip

MDagPath MPxManipContainer::addPointOnSurfaceManip ( const MString manipName,
const MString paramName 
)

This method creates a PointOnSurfaceManip and adds it to the MPxManipContainer container.

Parameters:
[in] manipName manipulator name
[in] paramName parameter name
Returns:
New PointOnSurfaceManip

MDagPath MPxManipContainer::addDiscManip ( const MString manipName,
const MString angleName 
)

This method creates a DiscManip and adds it to the MPxManipContainer container.

Parameters:
[in] manipName manipulator name
[in] angleName angle name
Returns:
New DiscManip

MDagPath MPxManipContainer::addCircleSweepManip ( const MString manipName,
const MString angleName 
)

This method creates a CircleSweepManip and adds it to the MPxManipContainer container.

Parameters:
[in] manipName manipulator name
[in] angleName angle name
Returns:
New CircleSweepManip

MDagPath MPxManipContainer::addToggleManip ( const MString manipName,
const MString toggleName 
)

This method creates a ToggleManip and adds it to the MPxManipContainer container.

Parameters:
[in] manipName manipulator name
[in] toggleName toggle name
Returns:
New ToggleManip

MDagPath MPxManipContainer::addStateManip ( const MString manipName,
const MString stateName 
)

This method creates a StateManip and adds it to the MPxManipContainer container.

Parameters:
[in] manipName manipulator name
[in] stateName state name
Returns:
New StateManip

MDagPath MPxManipContainer::addCurveSegmentManip ( const MString manipName,
const MString startParamName,
const MString endParamName 
)

This method creates a CurveSegmentManip and adds it to the MPxManipContainer container.

Parameters:
[in] manipName manipulator name
[in] startParamName start parameter name
[in] endParamName end parameter name
Returns:
New CurveSegmentManip

MDagPath MPxManipContainer::addRotateManip ( const MString manipName,
const MString rotationName 
)

This method creates a rotate manipulator and adds it to the MPxManipContainer container.

Parameters:
[in] manipName manipulator name
[in] rotationName name of the rotation vector
Returns:
Dag path to the new rotate manipulator

MDagPath MPxManipContainer::addScaleManip ( const MString manipName,
const MString scaleName 
)

This method creates a scale manipulator and adds it to the MPxManipContainer container.

Parameters:
[in] manipName manipulator name
[in] scaleName name of the scale vector
Returns:
Dag path to the new scale manipulator

MStatus MPxManipContainer::addMPxManipulatorNode ( const MString manipTypeName,
const MString manipName,
MPxManipulatorNode *&  proxyManip 
)

This method creates a custom MPxManipulatorNode and adds it to the MPxManipContainer container.

Parameters:
[in] manipTypeName manipulator name
[in] manipName name of the manip
[out] proxyManip returns a pointer to the new manipulator
Returns:

bool MPxManipContainer::isManipActive ( const MFn::Type manipType,
MObject manipObject 
)

This method determines if custom manip is active & gets the current manip object.

Parameters:
[in] manipType the type of the custom manip
[in] manipObject manipulator object
Returns:
  • true custom manip is active
  • false custom manip is inactive

MStatus MPxManipContainer::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.

Returns:

MStatus MPxManipContainer::addToManipConnectTable ( MTypeId mid  )  [static]

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".

Parameters:
[in] mid id of the user defined node
Returns:
MS::kSuccess if the node has been successfully added to the table.
Examples:

MStatus MPxManipContainer::removeFromManipConnectTable ( MTypeId id  )  [static]

This method removes the user defined node entry from the manipConnectTable.

Parameters:
[in] id id of the user defined node
Returns:
MS::kSuccess if the node has been successfully removed from the table.

MManipData MPxManipContainer::plugToManipConversion ( unsigned int  manipIndex  )  [virtual]

This virtual method works in conjunction with the addPlugToManipConversion() method. If addPlugToManipConversion() is called successfully, then this method or handler will be invoked to handle the conversion.

Implement this method to handle the the plug to manipulator conversions.

Parameters:
[in] manipIndex the index of the manipulator component that is being converted. For example scaleCenterIndex of the MFnScaleManip function set.
Returns:
Calculated manipulator data.
Examples:

MManipData MPxManipContainer::manipToPlugConversion ( unsigned int  manipIndex  )  [virtual]

This virtual method works in conjunction with the addManipToPlugConversion() method. If addManipToPlugConversion() is called successfully, then this method or handler will be invoked to handle the conversion.

Implement this method to handle the the plug to manipulator conversions.

Parameters:
[in] manipIndex the index of the plug to be converted.
Returns:
Calculated manipulator data.
Examples:

void MPxManipContainer::addPlugToManipConversion ( unsigned int  manipIndex  ) 

This method adds a plug to manipulator converter. 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()

Parameters:
[in] manipIndex the index of the manipulator component that will be converted

unsigned int MPxManipContainer::addManipToPlugConversion ( MPlug plug  ) 

This method adds a manipulator to plug converter. 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()

Parameters:
[in] plug the plug that is to be converted
Returns:
The index of the plug to be manipulated

void MPxManipContainer::addPlugToManipConversionCallback ( unsigned int  manipIndex,
plugToManipConversionCallback  callback 
)

NO SCRIPT SUPPORT.

This method adds a callback that calculates a converterManipValue from converterPlugValues. The callback accesses converterPlugValues and returns the value of a converterManipValue.

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()

Parameters:
[in] manipIndex the index of the converterManipValue for which the callback will be registered
[in] callback the callback that calculates a converterManipValue at the specified index from converterPlugValues

unsigned int MPxManipContainer::addManipToPlugConversionCallback ( MPlug plug,
manipToPlugConversionCallback  callback 
)

NO SCRIPT SUPPORT.

This method adds a callback that calculates a converterPlugValue from converterManipValues. The callback accesses converterManipValues and returns the value of a converterPlugValue.

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()

Parameters:
[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
Returns:
The index of the converterPlugValue that corresponds to the plug for which the callback was registered

MStatus MPxManipContainer::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.

Parameters:
[in] manipIndex the index of the converterManipValue
[out] value the value at the specified index
Returns:

MStatus MPxManipContainer::getConverterManipValue ( unsigned int  manipIndex,
double &  value 
)

This method retrieves the value of a converterManipValue of type double at a given index from the converter.

Parameters:
[in] manipIndex the index of the converterManipValue
[out] value the value at the specified index
Returns:

MStatus MPxManipContainer::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.

Parameters:
[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
Returns:

MStatus MPxManipContainer::getConverterManipValue ( unsigned int  manipIndex,
MPoint point 
)

This method retrieves the value of a converterManipValue of type MPoint at a given index from the converter.

Parameters:
[in] manipIndex the index of the converterManipValue
[out] point the value at the specified index
Returns:

MStatus MPxManipContainer::getConverterManipValue ( unsigned int  manipIndex,
MVector vector 
)

This method retrieves the value of a converterManipValue of type MVector at a given index from the converter.

Parameters:
[in] manipIndex the index of the converterManipValue
[out] vector the value at the specified index
Returns:

MStatus MPxManipContainer::getConverterManipValue ( unsigned int  manipIndex,
MMatrix matrix 
)

This method retrieves the value of a converterManipValue of type MMatrix at a given index from the converter.

Parameters:
[in] manipIndex the index of the converterManipValue
[out] matrix the value at the specified index
Returns:

MStatus MPxManipContainer::getConverterManipValue ( unsigned int  manipIndex,
MEulerRotation rotation 
)

This method retrieves the value of a converterManipValue of type MEulerRotation at a given index from the converter.

Parameters:
[in] manipIndex the index of the converterManipValue
[out] rotation the value at the specified index
Returns:

MStatus MPxManipContainer::getConverterManipValue ( unsigned int  manipIndex,
MTransformationMatrix xform 
)

This method retrieves the value of a converterManipValue of type MTransformationMatrix at a given index from the converter.

Parameters:
[in] manipIndex the index of the converterManipValue
[out] xform the value at the specified index
Returns:

MStatus MPxManipContainer::getConverterPlugValue ( unsigned int  plugIndex,
double &  value 
)

This method retrieves the value of a converterPlugValue of type double at a given index from the converter.

Parameters:
[in] plugIndex the index of the converterPlugValue
[out] value the value at the specified index
Returns:

MStatus MPxManipContainer::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.

Parameters:
[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
Returns:

MStatus MPxManipContainer::getConverterPlugValue ( unsigned int  plugIndex,
MPoint point 
)

This method retrieves the value of a converterPlugValue of type MPoint at a given index from the converter.

Parameters:
[in] plugIndex the index of the converterPlugValue
[out] point the value at the specified index
Returns:

MStatus MPxManipContainer::getConverterPlugValue ( unsigned int  plugIndex,
MVector vector 
)

This method retrieves the value of a converterPlugValue of type MVector at a given index from the converter.

Parameters:
[in] plugIndex the index of the converterPlugValue
[out] vector the value at the specified index
Returns:

MStatus MPxManipContainer::getConverterPlugValue ( unsigned int  plugIndex,
MMatrix matrix 
)

This method retrieves the value of a converterPlugValue of type MMatrix at a given index from the converter.

Parameters:
[in] plugIndex the index of the converterPlugValue
[out] matrix the value at the specified index
Returns:

MStatus MPxManipContainer::getConverterPlugValue ( unsigned int  plugIndex,
MEulerRotation rotation 
)

This method retrieves the value of a converterPlugValue of type MEulerRotation at a given index from the converter.

Parameters:
[in] plugIndex the index of the converterPlugValue
[out] rotation the value at the specified index
Returns:

MStatus MPxManipContainer::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.

Returns:
Examples:

MStatus MPxManipContainer::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.

Returns:
Examples:

MStatus MPxManipContainer::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.

Returns:
Examples:


Autodesk® Maya® 2009 © 1997-2008 Autodesk, Inc. All rights reserved. Generated with doxygen 1.5.6