#include
<MPxManipContainer.h>
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.
|
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
() |
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 ¶mName) |
MDagPath |
addPointOnSurfaceManip
(const MString
&manipName, const MString ¶mName) |
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 MPxManipContainer
* |
newManipulator
(const MString
&manipName, MObject &manipObject, MStatus *ReturnStatus=NULL) |
static MStatus |
addToManipConnectTable
(MTypeId &) |
static MStatus |
removeFromManipConnectTable
(MTypeId &) |
Friends
|
class |
MFnPlugin |
Member Typedef Documentation
Pointer to a plug-to-manip conversion callback function.
- Parameters:
-
[in] |
manipIndex |
Index of the manipulator value to be calculated. |
Pointer to a manip-to-plug conversion callback function.
- Parameters:
-
[in] |
plugIndex |
Index of the plug value to be calculated. |
Member Enumeration Documentation
Built-in manipulator types.
- Enumerator:
-
kFreePointTriadManip |
|
kDirectionManip |
|
kDistanceManip |
|
kPointOnCurveManip |
|
kPointOnSurfaceManip |
|
kDiscManip |
|
kCircleSweepManip |
|
kToggleManip |
|
kStateManip |
|
kCurveSegmentManip |
|
kCustomManip |
|
Constructor & Destructor Documentation
MPxManipContainer::MPxManipContainer |
( |
|
) |
|
MPxManipContainer::~MPxManipContainer |
( |
|
) |
[virtual] |
Member Function Documentation
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.
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
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 |
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.
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.
This method creates a FreePointTriadManip and adds it to the
MPxManipContainer
container.
- Parameters:
-
[in] |
manipName |
manipulator name |
[in] |
pointName |
point name |
- Returns:
- New FreePointTriadManip
This method creates a DirectionManip and adds it to the
MPxManipContainer
container.
- Parameters:
-
[in] |
manipName |
manipulator name |
[in] |
directionName |
direction name |
- Returns:
- New DirectionManip
This method creates a DistanceManip and adds it to the MPxManipContainer
container.
- Parameters:
-
[in] |
manipName |
manipulator name |
[in] |
distanceName |
distance name |
- Returns:
- New DistanceManip
This method creates a PointOnCurveManip and adds it to the
MPxManipContainer
container.
- Parameters:
-
[in] |
manipName |
manipulator name |
[in] |
paramName |
parameter name |
- Returns:
- New PointOnCurveManip
This method creates a PointOnSurfaceManip and adds it to the
MPxManipContainer
container.
- Parameters:
-
[in] |
manipName |
manipulator name |
[in] |
paramName |
parameter name |
- Returns:
- New PointOnSurfaceManip
This method creates a DiscManip and adds it to the MPxManipContainer
container.
- Parameters:
-
[in] |
manipName |
manipulator name |
[in] |
angleName |
angle name |
- Returns:
- New DiscManip
This method creates a CircleSweepManip and adds it to the
MPxManipContainer
container.
- Parameters:
-
[in] |
manipName |
manipulator name |
[in] |
angleName |
angle name |
- Returns:
- New CircleSweepManip
This method creates a ToggleManip and adds it to the MPxManipContainer
container.
- Parameters:
-
[in] |
manipName |
manipulator name |
[in] |
toggleName |
toggle name |
- Returns:
- New ToggleManip
This method creates a StateManip and adds it to the MPxManipContainer
container.
- Parameters:
-
[in] |
manipName |
manipulator name |
[in] |
stateName |
state name |
- Returns:
- New StateManip
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
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
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
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.
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 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).
- Parameters:
-
[in] |
manipIndex |
the index of the manipulator value to be calculated |
- Returns:
- New manipulator value.
MManipData
MPxManipContainer::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.
- Parameters:
-
[in] |
plugIndex |
the index of the plug value to be calculated |
- Returns:
- New plug value.
void
MPxManipContainer::addPlugToManipConversion |
( |
unsigned int |
manipIndex |
) |
|
unsigned int
MPxManipContainer::addManipToPlugConversion |
( |
MPlug & |
plug |
) |
|
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()
- Parameters:
-
[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 |
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()
- 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:
- Index used to identify the plug in calls to the callback.
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:
-
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:
-
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:
-
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:
-
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:
-
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:
-