MFnPlugin Class Reference
[OpenMaya - API module for common classesFunctionSet classes]

#include <MFnPlugin.h>
Inheritance diagram for MFnPlugin:
Inheritance graph
[legend]
Collaboration diagram for MFnPlugin:
Collaboration graph
[legend]

List of all members.


Detailed Description

Register and deregister plug-in services with Maya.

This class is used in the initializePlugin and uninitializePlugin functions of a Maya plug-in to respectively register and deregister the plug-in's services (commands, node types, etc) with Maya. The constructor for this class must be passed the MObject that Maya provides as an argument to initializePlugin and uninitializePlugin.

MFnPlugin provides various registration methods for use inside initializePlugin, when the plug-in is being loaded, and deregistration methods for use inside uninitializePlugin, when the plug-in is being unloaded. In general it is good practice to have uninitializePlugin deregister the plug-in's services in the reverse order in which they were registered in initializePlugin. This ensures, for example, that a custom datatype is not deregistered before the node types which use it.

A plug-in's uninitializePlugin function is only called when the plug-in is explicitly unloaded. It is not called when Maya exits. Normally this is not a problem because system resources such as memory and open file handles are automatically released by the operating system when Maya exits. However, if there are cleanup tasks which a plug-in must perform even when Maya exits, for example deleting a temporary file, then the plug-in's initializePlugin can use the MSceneMessage::addCallback method with a message of "kMayaExiting" to register a callback function that will be executed when Maya is about to exit. The callback function can then handle any cleanup activities which the operating system won't handle automatically on exit.

A side effect of including MFnPlugin.h in a source file is to embed an API version string into the corresponding compiled object file. Because of this, including MFnPlugin.h in more than one source file in the same plug-in will lead to conflicts when the plug-in is linked. If it is necessary to include MFnPlugin.h in more than one of a plug-in's source files the preprocessor macro MNoVersionString should be defined in all but one of those files prior to the inclusion of MFnPlugin.h. Normally, this issue will not arise as only the file that contains the initializePlugin and uninitializePlugin routines should need to include MFnPlugin.h.

It is unusual, but possible, to instantiate several MFnPlugin objects within a single plug-in binary. In this case the vendor and version information that is set for the plug-in is taken from the first instance as this information works per binary rather than per command/node etc.

Examples:

affectsNode.cpp, animCubeNode.cpp, animExportUtil.cpp, animImportExport.cpp, animInfoCmd.cpp, anisotropicShader.cpp, apiMeshShape.cpp, apiSimpleShape.cpp, arcLenNode.cpp, AshliPluginMain.cpp, backfillShader.cpp, blindComplexDataCmd.cpp, blindDataPluginMain.cpp, blindDoubleDataCmd.cpp, blindShortDataCmd.cpp, brickShader.cpp, buildRotationNode.cpp, cellShader.cpp, checkerShader.cpp, circleNode.cpp, cleanPerFaceAssignmentPluginMain.cpp, clearcoat.cpp, closestPointCmd.cpp, closestPointOnCurvePlugin.cpp, closestPointOnNurbsSurfaceCmd.cpp, clothPaintAttrCmd.cpp, clusterWeightFunction.cpp, componentScaleManip.cpp, compositingShader.cpp, conditionTest.cpp, contrastShader.cpp, convertBumpCmd.cpp, convertEdgesToFacesCmd.cpp, convertVerticesToEdgesCmd.cpp, convertVerticesToFacesCmd.cpp, createClipCmd.cpp, curvedArrowsNode.cpp, customAttrManip.cpp, customImagePlane.cpp, cvColorNode.cpp, cvColorShader.cpp, cvPosCmd.cpp, D3DViewportRendererPlugin.cpp, dagMessageCmd.cpp, dagPoseInfoCmd.cpp, ddsFloatReader.cpp, deletedMsgCmd.cpp, depthShader.cpp, displacementShader.cpp, dynExprField.cpp, eventTest.cpp, exampleMRampAttribute.cpp, exportJointClusterDataCmd.cpp, exportSkinClusterDataCmd.cpp, fileIOMsgCmd.cpp, filteredAsciiFile.cpp, flameShader.cpp, flipUVMain.cpp, fluidInfoCmd.cpp, footPrintManip.cpp, footPrintNode.cpp, fullLoftNode.cpp, gammaShader.cpp, genericAttributeNode.cpp, geometryCacheConverter.cpp, geometrySurfaceConstraint.cpp, geomShader.cpp, hairCollisionSolver.cpp, helix2Cmd.cpp, helixTool.cpp, hlslPluginMain.cpp, hwAnisotropicShader_NV20.cpp, hwColorPerVertexShader.cpp, hwDecalBumpShader_NV20.cpp, hwManagedTextureShader.cpp, hwPhongShader.cpp, hwReflectBumpShader_NV20.cpp, hwRefractReflectShader_NV20.cpp, hwRenderPostEffect.cpp, hwToonShader_NV20.cpp, hwUnlitShader.cpp, iffInfoCmd.cpp, iffPixelCmd.cpp, iffPpmCmd.cpp, instanceCallbackCmd.cpp, interpShader.cpp, intersectCmd.cpp, intersectOnNurbsSurfaceCmd.cpp, jitterNode.cpp, jlcVcrDevice.cpp, lambertShader.cpp, lassoTool.cpp, latticeNoise.cpp, lavaShader.cpp, lepTranslator.cpp, lightShader.cpp, lineManip.cpp, lineManipContainer.cpp, lockEvent.cpp, marqueeTool.cpp, maTranslator.cpp, meshOpMain.cpp, meshReorderPlugin.cpp, mixtureShader.cpp, motionPathCmd.cpp, motionTraceCmd.cpp, moveCurveCVsCmd.cpp, moveManip.cpp, moveNumericTool.cpp, moveTool.cpp, multiCurveNode.cpp, narrowPolyViewerMain.cpp, nodeCreatedCBCmd.cpp, nodeInfoCmd.cpp, nodeMessageCmd.cpp, noiseShader.cpp, objExport.cpp, offsetNode.cpp, OpenEXR.cpp, OpenGLViewportRendererPlugin.cpp, ownerEmitter.cpp, particleAttrNodeMain.cpp, particlePathsCmd.cpp, particleSystemInfoCmd.cpp, peltOverlapCmd.cpp, pfxInfoCmd.cpp, phongShader.cpp, pickCmd.cpp, pluginMain.cpp, pnTrianglesNode.cpp, pointOnMeshInfoPlugin.cpp, pointOnSubdNode.cpp, polyMessageCmd.cpp, polyPrimitiveCmd.cpp, polyRawExporter.cpp, polyTrgNode.cpp, polyX3DExporter.cpp, progressWindowCmd.cpp, quadricShape.cpp, referenceQueryCmd.cpp, renderAccessNode.cpp, renderViewInteractiveRenderCmd.cpp, renderViewRenderCmd.cpp, renderViewRenderRegionCmd.cpp, rockingTransformCheckMain.cpp, rockingTransformMain.cpp, rotateManip.cpp, sampleCmd.cpp, sampleParticles.cpp, scanDagCmd.cpp, scanDagSyntax.cpp, shadowMatteShader.cpp, shellNode.cpp, shiftNode.cpp, simpleEmitter.cpp, simpleFluidEmitter.cpp, simpleImageFile.cpp, simpleLoftNode.cpp, simpleSolverNode.cpp, simpleSpring.cpp, sineNode.cpp, slopeShader.cpp, solidCheckerShader.cpp, spiralAnimCurveCmd.cpp, splitUVMain.cpp, squareScaleManip.cpp, squareScaleManipContext.cpp, stringFormatNode.cpp, surfaceBumpManip.cpp, surfaceCreateCmd.cpp, surfaceTwistCmd.cpp, sweptEmitter.cpp, swissArmyManip.cpp, testNobjectNode.cpp, testNucleusNode.cpp, tiffFloatReader.cpp, torusField.cpp, transCircleNode.cpp, translateCmd.cpp, undoRedoMsgCmd.cpp, userMsgCmd.cpp, viewCallbackTest.cpp, volumeShader.cpp, weightListNode.cpp, XmlGeometryCache.cpp, yTwistNode.cpp, and zoomCameraCmd.cpp.


Public Member Functions

  MFnPlugin ()
  MFnPlugin (MObject &object, const char *vendor="Unknown", const char *version="Unknown", const char *requiredApiVersion="Any", MStatus *ReturnStatus=0L)
virtual  ~MFnPlugin ()
virtual MFn::Type  type () const
MString  vendor (MStatus *ReturnStatus=NULL) const
MString  version (MStatus *ReturnStatus=NULL) const
MString  apiVersion (MStatus *ReturnStatus=NULL) const
MString  name (MStatus *ReturnStatus=NULL) const
MString  loadPath (MStatus *ReturnStatus=NULL) const
MStatus  setName (const MString &newName, bool allowRename=true)
MStatus  setVersion (const MString &newVersion)
MStatus  registerCommand (const MString &commandName, MCreatorFunction creatorFunction, MCreateSyntaxFunction createSyntaxFunction=NULL)
MStatus  deregisterCommand (const MString &commandName)
MStatus  registerControlCommand (const MString &commandName, MCreatorFunction creatorFunction)
MStatus  deregisterControlCommand (const MString &commandName)
MStatus  registerModelEditorCommand (const MString &commandName, MCreatorFunction creatorFunction, MCreatorFunction paneCreatorFunction)
MStatus  deregisterModelEditorCommand (const MString &commandName)
MStatus  registerConstraintCommand (const MString &commandName, MCreatorFunction creatorFunction)
MStatus  deregisterConstraintCommand (const MString &commandName)
MStatus  registerContextCommand (const MString &commandName, MCreatorFunction creatorFunction)
MStatus  registerContextCommand (const MString &commandName, MCreatorFunction creatorFunction, const MString &toolCmdName, MCreatorFunction toolCmdCreator, MCreateSyntaxFunction toolCmdSyntax=NULL)
MStatus  deregisterContextCommand (const MString &commandName)
MStatus  deregisterContextCommand (const MString &commandName, const MString &toolCmdName)
MStatus  registerNode (const MString &typeName, const MTypeId &typeId, MCreatorFunction creatorFunction, MInitializeFunction initFunction, MPxNode::Type type=MPxNode::kDependNode, const MString *classification=NULL)
MStatus  deregisterNode (const MTypeId &typeId)
MStatus  registerShape (const MString &typeName, const MTypeId &typeId, MCreatorFunction creatorFunction, MInitializeFunction initFunction, MCreatorFunction uiCreatorFunction, const MString *classification=NULL)
MStatus  registerTransform (const MString &typeName, const MTypeId &typeId, MCreatorFunction creatorFunction, MInitializeFunction initFunction, MCreateXformMatrixFunction xformCreatorFunction, const MTypeId &xformId, const MString *classification=NULL)
MStatus  registerData (const MString &typeName, const MTypeId &typeId, MCreatorFunction creatorFunction, MPxData::Type type=MPxData::kData)
MStatus  deregisterData (const MTypeId &typeId)
MStatus  registerDevice (const MString &deviceName, MCreatorFunction creatorFunction)
MStatus  deregisterDevice (const MString &deviceName)
MStatus  registerFileTranslator (const MString &translatorName, char *pixmapName, MCreatorFunction creatorFunction, char *optionsScriptName=NULL, char *defaultOptionsString=NULL, bool requiresFullMel=false)
MStatus  deregisterFileTranslator (const MString &translatorName)
MStatus  registerIkSolver (const MString &ikSolverName, MCreatorFunction creatorFunction)
MStatus  deregisterIkSolver (const MString &ikSolverName)
MStatus  registerCacheFormat (const MString &cacheFormatName, MCreatorFunction creatorFunction)
MStatus  deregisterCacheFormat (const MString &cacheFormatName)
MStatus  registerUIStrings (MInitializeFunction registerMStringResources, const MString &pluginStringsProc)
MStatus  registerDragAndDropBehavior (const MString &behaviorName, MCreatorFunction creatorFunction)
MStatus  deregisterDragAndDropBehavior (const MString &behaviorName)
MStatus  registerImageFile (const MString &imageFormatName, MCreatorFunction creatorFunction, const MStringArray &imageFileExtensions)
MStatus  deregisterImageFile (const MString &imageFormatName)
MStatus  registerRenderPassImpl (const MString &passImplId, MRenderPassDef *passDef, MCreatorFunction creatorFunction, bool overload=false)
MStatus  deregisterRenderPassImpl (const MString &passImplId)
MTypeId  matrixTypeIdFromXformId (const MTypeId &xformTypeId, MStatus *ReturnStatus=NULL)
MStringArray  addMenuItem (const MString &menuItemName, const MString &parentName, const MString &commandName, const MString &commandParams, bool needOptionBox=false, const MString *optBoxFunction=NULL, MStatus *retStatus=NULL)
MStatus  removeMenuItem (MStringArray &menuItemNames)
MStatus  registerMaterialInfo (const MString &type, MMaterialInfoFactoryFnPtr fnPtr)
MStatus  unregisterMaterialInfo (const MString &typeName)
MStatus  registerBakeEngine (const MString &typeName, MBakeEngineCreatorFnPtr fnPtr)
MStatus  unregisterBakeEngine (const MString &typeName)
MStatus  registerTransform (const MString &typeName, const MTypeId &typeId, MCreatorFunction creatorFunction, MInitializeFunction initFunction, MCreatorFunction xformCreatorFunction, const MTypeId &xformId, const MString *classification=NULL)
  Obsolete.
MStatus  registerUI (const MString &creationProc, const MString &deletionProc, const MString &creationBatchProc="", const MString &deletionBatchProc="")
  NO SCRIPT SUPPORT.

Static Public Member Functions

static MObject  findPlugin (const MString &pluginName)
static bool  isNodeRegistered (const MString &typeName)
static void  setRegisteringCallableScript ()
static bool  registeringCallableScript ()

Constructor & Destructor Documentation

MFnPlugin::MFnPlugin (  ) 

Default class constructor. The function set is not attached to an MObject.

MFnPlugin::MFnPlugin ( MObject object,
const char *  vendor = "Unknown",
const char *  version = "Unknown",
const char *  requiredApiVersion = "Any",
MStatus ReturnStatus = 0L  
)

Class constructor that initializes the function set to the given MObject. The MObject should the be one passed as an argument to either the initializePlugin or uninitializePlugin entry points of a Maya plug-in.

Parameters:
[in]  object  the MObject to attach the function set to
[in]  vendor  a string identifying the vendor of this plug-in
[in]  version  a string identifying the version number of this plug-in
[in]  requiredApiVersion  if the plug-in is known to work with only a specify API version, that version can be specified here. This argument is current not used by the Maya API.
[out]  ReturnStatus  the return status
Status Codes:

MFnPlugin::~MFnPlugin (  )  [virtual]

The class destructor.


Member Function Documentation

MFn::Type MFnPlugin::type (  )  const [virtual]

Return the type of this function set.

Returns:
The constant MFn::kPlugin

Reimplemented from MFnBase.

MString MFnPlugin::vendor ( MStatus ReturnStatus = NULL  )  const

Return the vendor string supplied in the MFnPlugin constructor.

Parameters:
[out]  ReturnStatus  the return status
Returns:
An MString containing the vendor name
Status Codes:
  • MS::kSuccess if successful
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject.

MString MFnPlugin::version ( MStatus ReturnStatus = NULL  )  const

Return the version string supplied in the MFnPlugin constructor.

Parameters:
[out]  ReturnStatus  the return status
Returns:
An MString containing the version string
Status Codes:
  • MS::kSuccess if successful
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject.

MString MFnPlugin::apiVersion ( MStatus ReturnStatus = NULL  )  const

Return the required API version string supplied in the MFnPlugin constructor.

Parameters:
[out]  ReturnStatus  the return status
  • MS::kSuccess if successful
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject.
Returns:
An MString containing the required API version string

MString MFnPlugin::name ( MStatus ReturnStatus = NULL  )  const

Return the name by which Maya knows this plug-in.

Parameters:
[out]  ReturnStatus  the return status
  • MS::kSuccess if successful
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject.
Returns:
An MString containing the plug-in name

MString MFnPlugin::loadPath ( MStatus ReturnStatus = NULL  )  const

Determine the path where the plugin was loaded.

Parameters:
[out]  ReturnStatus  the return status
  • MS::kSuccess if successful
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject.
Returns:
An MString containing path name to the location of the plugin.

MStatus MFnPlugin::setName ( const MString newName,
bool  makeUnique = true  
)

Set the name by which Maya knows this plug-in.

Parameters:
[in]  newName  the new name
[in]  makeUnique  if true and the requested name is already in use, then Maya will create an unused name for this plug-in. If false, and the name is in use, do not change the current name.
Returns:
  • MS::kSuccess if successful
  • MS::kFailure makeUnique was false, and the requested name is already in use
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject.

MStatus MFnPlugin::setVersion ( const MString newVersion  ) 

Set the version name for this plug-in.

Parameters:
[in]  newVersion  the new version
Returns:
  • MS::kSuccess if successful
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject.

MStatus MFnPlugin::registerCommand ( const MString commandName,
MCreatorFunction  creatorFunction,
MCreateSyntaxFunction  createSyntaxFunction = NULL  
)

Register a new command with Maya. Once registered, the command can be invoked from MEL in a manner identical to built-in Maya commands.

Parameters:
[in]  commandName  the name of the command to register
[in]  creatorFunction  a pointer to a function that will return a pointer to a new instance of the class (derived from MPxCommand) that implements the new command.
[in]  createSyntaxFunction  a pointer to a function that will return a new instance of a syntax object (MSyntax) that implements the syntax of the command.
Returns:
  • MS::kSuccess if the command is successfully registered
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject
Examples:

MStatus MFnPlugin::deregisterCommand ( const MString commandName  ) 

Deregister the user defined command from Maya. Once deregistered the command can no longer be invoked from MEL.

Parameters:
[in]  commandName  the name of the command to deregister
Returns:
  • MS::kSuccess if successful
  • MS::kFailure the command was not owned by this plug-in
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject.

MStatus MFnPlugin::registerControlCommand ( const MString commandName,
MCreatorFunction  creatorFunction  
)

Register a new control command with Maya. Once registered, the command can be invoked from MEL in a manner identical to built-in Maya commands.

Parameters:
[in]  commandName  the name of the control to register
[in]  creatorFunction  a pointer to a function that will return a pointer to a new instance of the class(derived from MPxControlCommand) that implements the new command.
Returns:
  • MS::kSuccess if the command is successfully registered
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject

MStatus MFnPlugin::deregisterControlCommand ( const MString commandName  ) 

Deregister the user defined control command from Maya. Once deregistered the command can no longer be invoked from MEL.

Parameters:
[in]  commandName  the name of the command to deregister
Returns:
  • MS::kSuccess if successful
  • MS::kFailure the command was not owned by this plug-in
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject.

MStatus MFnPlugin::registerModelEditorCommand ( const MString commandName,
MCreatorFunction  creatorFunction,
MCreatorFunction  viewCreatorFunction  
)

Register a new model editor command with Maya. Once registered, the command can be invoked from MEL in a manner identical to built-in Maya commands.

Parameters:
[in]  commandName  the name of the command to register
[in]  creatorFunction  a pointer to a function that will return a pointer to a new instance of the class (derived from MPxEditorCommand) that implements the new command.
[in]  viewCreatorFunction  a pointer to a function that will return a pointer to a new instance of the class (derived from MPx3dModelView) that implemented the new view associated with this command.
Returns:
Examples:

MStatus MFnPlugin::deregisterModelEditorCommand ( const MString commandName  ) 

Deregister the user defined editor command from Maya. Once deregistered the command can no longer be invoked from MEL.

Parameters:
[in]  commandName  the name of the command to deregister
Returns:
  • MS::kSuccess if successful
  • MS::kFailure the command was not owned by this plug-in
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject.

MStatus MFnPlugin::registerConstraintCommand ( const MString commandName,
MCreatorFunction  creatorFunction  
)

Register a new constraint command with Maya. Once registered, the command can be invoked from MEL in a manner identical to built-in Maya commands.

Parameters:
[in]  commandName  the name of the command to register
[in]  creatorFunction  a pointer to a function that will return a pointer to a new instance of the class (derived from MPxConstraintCommand) that implements the new command.
Returns:

MStatus MFnPlugin::deregisterConstraintCommand ( const MString commandName  ) 

Deregister the user defined constraint command from Maya. Once deregistered the command can no longer be invoked from MEL.

Parameters:
[in]  commandName  the name of the command to deregister
Returns:
  • MS::kSuccess if successful
  • MS::kFailure the command was not owned by this plug-in
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject.

MStatus MFnPlugin::registerContextCommand ( const MString commandName,
MCreatorFunction  creatorFunction  
)

Register a new context command with Maya. Once registered, the context can be used to create a new tool that can be used in a manner identical to built-in Maya tools.

Parameters:
[in]  commandName  the name of the context command to register
[in]  creatorFunction  a pointer to a function that will return a pointer to a new instance of the class (derived from MPxToolCommand) that implements the new tool.
Returns:
  • MS::kSuccess if the command is successfully registered
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject
Examples:

MStatus MFnPlugin::registerContextCommand ( const MString commandName,
MCreatorFunction  creatorFunction,
const MString toolCmdName,
MCreatorFunction  toolCmdCreator,
MCreateSyntaxFunction  toolCmdSyntax = NULL  
)

Register a new context command and a new tool command with Maya. This version of registerContextCommand must be used if a tool command (a class derived from MPxToolCommand) is used within the context. The method newToolCommand of MPxContext will return a new instance of the tool command that can be used in the context.

Once registered, the context can be used to create a new tool that can be used in a manner identical to built-in Maya tools. The tool command can also be used as a MEL command.

Parameters:
[in]  commandName  the name of the context command to register
[in]  creatorFunction  a pointer to a function that will return a pointer to a new instance of the class (derived from MPxToolCommand) that implements the new tool.
[in]  toolCmdName  the name of the tool command to register
[in]  toolCmdCreator  a pointer to a function that will return a pointer to a new instance of the class (derived from MPxToolCommand) that implements the new command.
[in]  toolCmdSyntax  a pointer to a function that will return a new instance of a syntax object (MSyntax) that implements the syntax of the command.
Returns:
  • MS::kSuccess if the command is successfully registered
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject

MStatus MFnPlugin::deregisterContextCommand ( const MString commandName  ) 

Deregister the given user defined context command from Maya. Once deregistered the user defined tool can no longer be used.

Parameters:
[in]  commandName  the name of the context command to deregister
Returns:
  • MS::kSuccess if successful
  • MS::kFailure the command was not owned by this plug-in
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject.

MStatus MFnPlugin::deregisterContextCommand ( const MString commandName,
const MString toolCmdName  
)

Deregister the given user defined context command and tool command from Maya. Once deregistered the user defined tool can no longer be used and the tool command can no longer be invoked from MEL.

Parameters:
[in]  commandName  the name of the context command to deregister
[in]  toolCmdName  the name of the command to deregister
Returns:
  • MS::kSuccess if successful
  • MS::kFailure the command was not owned by this plug-in
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject.

MStatus MFnPlugin::registerNode ( const MString typeName,
const MTypeId typeId,
MCreatorFunction  creatorFunction,
MInitializeFunction  initFunction,
MPxNode::Type  type = MPxNode::kDependNode,
const MString classification = NULL  
)

Register a new dependency node with Maya. Once registered, the node can be used from MEL in a manner identical to built-in Maya nodes.

Parameters:
[in]  typeName  the name of the new type of node
[in]  typeId  a unique id that identifies this node
[in]  creatorFunction  a pointer to a function that will return a pointer to a new instance of the class (derived from MPxNode) that implements the new node type
[in]  initFunction  a pointer to a function that will initialize all the attributes of the new node type
[in]  type  the type of plugin node to be registered
[in]  classification  a string that is used in dependency nodes that are also shaders to provide more detailed type information to the rendering system. See the documentation for the MEL commands getClassification and listNodeTypes for information on the strings that can be provided.
Returns:
  • MS::kSuccess if the node type was successfully registered
  • MS::kFailure the registration failed.
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject.
Examples:

MStatus MFnPlugin::deregisterNode ( const MTypeId typeId  ) 

Deregister the given user defined dependency node type Maya. Once deregistered new instances of the user defined dependency node can no longer be created. Additionally, any existing instances of the node type will be changed to the special type Unknown and will no longer evaluate in the dependency graph although they will be saved correctly if the scene is written.

Parameters:
[in]  typeId  the unique type id of the node type to deregister
Returns:
  • MS::kSuccess if successful
  • MS::kFailure the node type was not owned by this plug-in
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject.
Examples:

MStatus MFnPlugin::registerShape ( const MString typeName,
const MTypeId typeId,
MCreatorFunction  creatorFunction,
MInitializeFunction  initFunction,
MCreatorFunction  uiCreatorFunction,
const MString classification = NULL  
)

Registers the given user defined shape node with Maya. Once registered, the shape can be used from MEL in a manner identical to built-in Maya nodes.

To deregister the shape node use the MFnPlugin::deregisterNode() method.

Parameters:
[in]  typeName  the name of the new type of user defined shape node
[in]  typeId  a unique id that identifies this node
[in]  creatorFunction  a pointer to a function that will return a pointer to a new instance of the class (derived from MPxSurfaceNode) that implements the new shape node type
[in]  initFunction  a pointer to a function that will initialize all the attributes of the new shape node type
[in]  uiCreatorFunction  a pointer to a function that will return a pointer to a new instance of the class (derived from MGxSurfaceShapeUI) that is used to implement the drawing and selection functions of the user defined shape.
[in]  classification  a string that is used in dependency nodes that are also shaders to provide more detailed type information to the rendering system. See the documentation for the MEL commands getClassification and listNodeTypes for information on the strings that can be provided.
Returns:
  • MS::kSuccess if the node type was successfully registered
  • MS::kFailure the registration failed.
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject.

MStatus MFnPlugin::registerTransform ( const MString typeName,
const MTypeId typeId,
MCreatorFunction  creatorFunction,
MInitializeFunction  initFunction,
MCreateXformMatrixFunction  xformCreatorFunction,
const MTypeId xformId,
const MString classification = NULL  
)

Registers the given user defined transform node with Maya. Once registered, the transform can be used from MEL in a manner identical to built-in Maya nodes.

To deregister the transform node use the MFnPlugin::deregisterNode() method.

Parameters:
[in]  typeName  the name of the new type of user defined transform node
[in]  typeId  a unique id that identifies this node
[in]  creatorFunction  a pointer to a function that will return a pointer to a new instance of the class (derived from MPxTransform) that implements the new transform node type
[in]  initFunction  a pointer to a function that will initialize all the attributes of the new transform node type
[in]  xformCreatorFunction  a pointer to a function that will return a pointer to a new instance of the class (derived from MPxTransformationMatrix) that is used to implement the matrix functions of the custom transform. For default behavior, use the MPxTransformationMatrix::creator method.
[in]  xformId  a unique id that identifies this transformation matrix. If MPxTransformationMatrix::creator is used, then MPxTransformationMatrix::baseTransformationMatrixId should be used.
[in]  classification  a string that is used in dependency nodes that are also shaders to provide more detailed type information to the rendering system. See the documentation for the MEL commands getClassification and listNodeTypes for information on the strings that can be provided.
Returns:
  • MS::kSuccess if the node type was successfully registered
  • MS::kFailure the registration failed.
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject.
Examples:

MStatus MFnPlugin::registerData ( const MString typeName,
const MTypeId typeId,
MCreatorFunction  creatorFunction,
MPxData::Type  type = MPxData::kData  
)

Register a new data type with Maya. Once registered, the data type can be passed between dependency nodes in a manner identical to built-in Maya data types.

Parameters:
[in]  typeName  the name of the data type to register
[in]  typeId  the unique type id of the data type to register
[in]  creatorFunction  a pointer to a function that will return a pointer to a new instance of the class (derived from MPxData) that implements the new data type.
[in]  type  the type of data being registered, see the Type enum in MPxData.h for all available types
/return
  • MS::kSuccess if the data type is successfully registered
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject

MStatus MFnPlugin::deregisterData ( const MTypeId typeId  ) 

Deregister the given user defined data type from Maya.

It is important to note that this method will always fail if there are any instances of the user-defined data in the scene. If the plug-in were to be allowed to deregister its implementation of the data, it would become impossible to save the scene since the writeASCII and writeBinary methods would no longer be accessible.

Parameters:
[in]  typeId  the unique type id of the data type to deregister
Returns:
  • MS::kSuccess if successful
  • MS::kFailure the data type is being used by current instances of nodes in the dependency graph
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject.

MStatus MFnPlugin::registerDevice ( const MString deviceName,
MCreatorFunction  creatorFunction  
)

Register a new input device with Maya. Once registered, the new input device can be connected to Maya actions using the assignInputDevice command in MEL in a manner identical to built-in Maya devices. In Maya 1.0, only Midi input devices are supported and the creatorFunction must return a pointer to a MPxMidiInputDevice instance. This interface will be generalized in a future release.

Parameters:
[in]  deviceName  the name of the device to register
[in]  creatorFunction  a pointer to a function that will return a pointer to a new instance of the class (derived from MPxMidiInputDevice) that implements the new device.
Returns:
  • MS::kSuccess if the device is successfully registered
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject

MStatus MFnPlugin::deregisterDevice ( const MString deviceName  ) 

Deregister the given user defined input device from Maya.

Parameters:
[in]  deviceName  the name of the input device to deregister
Returns:
  • MS::kSuccess if successful
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject.

MStatus MFnPlugin::registerFileTranslator ( const MString translatorName,
char *  pixmapName,
MCreatorFunction  creatorFunction,
char *  optionsScriptName = NULL,
char *  defaultOptionsString = NULL,
bool  requiresFullMel = false  
)

Register a new file translator with Maya.

It requires a name string containing the "name" by which Maya will refer to this file type, and a pathname to an "icon" file which Maya will use in its file selection dialogs.

Parameters:
[in]  translatorName  the string by which Maya will refer to this file type
[in]  pixmapName  the pathname of the icon used in file selection dialogs
[in]  creatorFunction  a pointer to a function that will return a pointer to a new instance of the class (derived from MPxFileTranslator) that implements the new file type.
[in]  optionsScriptName  the name of a MEL script that will be used to display the contents of the options dialog during file open and save.
[in]  defaultOptionsString  the default value of the options string that will be passed to the options script.
[in]  requiresFullMel  this should be set to true if the reader method in the derived class intends to issue MEL commands via the MGlobal::executeCommand method. Setting this to true will slow down the creation of new objects, but allows MEL commands other than those that are part of the Maya Ascii file format to function correctly. This parameter defaults to false.
Returns:
  • MS::kSuccess if the file translator is successfully registered
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject

MStatus MFnPlugin::deregisterFileTranslator ( const MString translatorName  ) 

Deregister the specified file translator with Maya.

Parameters:
[in]  translatorName  the name of the translator to deregister
Returns:
  • MS::kSuccess if the file translator is successfully registered
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject

MStatus MFnPlugin::registerIkSolver ( const MString ikSolverName,
MCreatorFunction  creatorFunction  
)

Register a new ik-solver with Maya. NOTE: this method is obsolete. Instead, register the IK solver as a node as described in the example plug-in simpleSolverNode.cpp.

  • ikSolverName the name of the new IK solver
  • creatorFunction a pointer to a function that will return a pointer to a new instance of the class (derived from MPxIkSolver) that implements the new file type.
Returns:
  • MS::kSuccess if the ik-solver is successfully registered
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject

MStatus MFnPlugin::deregisterIkSolver ( const MString ikSolverName  ) 

Deregister the specified ik-solver with Maya. NOTE: this method is obsolete. Instead, register the IK solver as a node as described in the example plug-in simpleSolverNode.cpp.

Parameters:
[in]  ikSolverName  the name of the ik solver to deregister
Returns:
  • MS::kSuccess if the ik-solver is successfully registered
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject

MStatus MFnPlugin::registerCacheFormat ( const MString cacheFormatName,
MCreatorFunction  creatorFunction  
)

Register a new cache format with Maya.

  • ikSolverName the name of the new cache format
  • creatorFunction a pointer to a function that will return a pointer to a new instance of the class (derived from MPxCacheFormat) that implements the new file type.
Returns:
  • MS::kSuccess if the cache format is successfully registered
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject

MStatus MFnPlugin::deregisterCacheFormat ( const MString cacheFormatName  ) 

Deregister the specified cache format with Maya.

Parameters:
[in]  cacheFormatName  the name of the cache format to deregister
Returns:

MStatus MFnPlugin::registerUIStrings ( MInitializeFunction  registerMStringResources,
const MString pluginStringsProc  
)

Set the callback and procedure names of routines that register plugin string resources and optionally load localized values for them.

These procedures are called immediately upon plugin load. They are responsible for registering all string resources that can be referred to during the plugin execution. If the string resources are localized, the localized values are also loaded at this time.

Each string resource is given a default value when it is registered. If the plugin is localized, any localized values specified will override the registered default and will be used instead of the default value when the resource value is queried.

The registerMStringResources callback is a function which makes a series of calls to MStringResource::registerString for each MStringResourceId to be registered. Its signature is described by the MInitializeFunction typedef.

The pluginStringsProc is a mel procedure that will be evaluated to register any other strings resources for the plugin, i.e. those used in the plugin's scripts (see the registerPluginString command). It is also responsible for loading the localized resource overrides if they are available (see loadPluginLanguageResources).

See also the following classes: MStringResourceId, MStringResource.

Parameters:
[in]  registerMStringResources  This callback is used to register MStringResources that are used by the plugin code. The callback signature type is defined by MInitializeFunction.
[in]  pluginStringsProc  The name of the mel procedure to be run during plugin load to register script-based resources. This script will also make the necessary calls to load localized string values if they exist.
Returns:
  • MS::kSuccess if successful
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject.

MStatus MFnPlugin::registerDragAndDropBehavior ( const MString behaviorName,
MCreatorFunction  creatorFunction  
)

Register a new drag and drop behavior with Maya. Once registered, the new behavior can be used to finish connections between node drag and drops from the hyperGraph/hyperShade to other nodes or Maya UI.

Parameters:
[in]  behaviorName  the name of the drag and drop behavior to register
[in]  creatorFunction  a pointer to a function that will return a pointer to a new instance of the class (derived from MPxDragAndDropBehavior) that implements the new behavior.
Returns:
  • MS::kSuccess if the bevavior is successfully registered
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject
Examples:

MStatus MFnPlugin::deregisterDragAndDropBehavior ( const MString behaviorName  ) 

Deregister the given drag and drop behavior from Maya.

Parameters:
[in]  behaviorName  the name of the behavior to deregister
Returns:
  • MS::kSuccess if successful
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject.

MStatus MFnPlugin::registerImageFile ( const MString imageFormatName,
MCreatorFunction  creatorFunction,
const MStringArray imageFileExtensions  
)

Register a new image file translator with Maya.

Parameters:
[in]  imageFormatName  the name of the image format to register
[in]  creatorFunction  a pointer to a function that will return a pointer to a new instance of the class (derived from MImageFile) that implements the new file type.
[in]  imageFileExtensions  this list of file extensions this image file should be associated with.
Returns:

MStatus MFnPlugin::deregisterImageFile ( const MString imageFormatName  ) 

Deregister the specified image file translator with Maya.

Parameters:
[in]  imageFormatName  the name of the image format to deregister
Returns:

MStatus MFnPlugin::registerRenderPassImpl ( const MString passImplId,
MRenderPassDef passDef,
MCreatorFunction  creatorFunction,
bool  overload = false  
)

Register a new render pass implementation with Maya and associate with the given render pass definition. If an implementation with id passImplId has already been registered and creatorFunction is the same as the already registered creator function then the existing implementation will also be used for the current pass (SAME instances). It is an error if the passImplId is already defined and a different creatorFunction is used. If you wish to associate DIFFERENT instances of the same pass implementation with different passes, then use unique passImplIds when registering each.

Parameters:
[in]  passImplId  a unique name identifying the pass implementation
[in]  passDef  the render pass definition to associate this implementation with
[in]  creatorFunction  a pointer to a function that will return a pointer to a new instance of the class (derived from MPxRenderPassImpl) that implements the render pass definiton.
[in]  overload  Override any existing implementation in the registry
Returns:

MStatus MFnPlugin::deregisterRenderPassImpl ( const MString passImplId  ) 

Deregister the specified render pass implementation with Maya. This will remove the implementation from all passes it is associated with.

Parameters:
[in]  passImplId  the name identifying the pass implementation to remove
Returns:

MObject MFnPlugin::findPlugin ( const MString pluginName  )  [static]

Returns an MObject corresponding to the named plugin. If the plugin isn't loaded, the MObject will be kNullObj. This MObject may be used in the same way as the MObject passed to the plugin's initializePlugin() function. Do not hold onto this MObject, if you need it again later, call findPlugin() again.

Parameters:
[in]  pluginName  the name of the plugin you want a handle for.
Returns:

bool MFnPlugin::isNodeRegistered ( const MString typeName  )  [static]

Queries if the given typeName has been registered by maya or plugins.

Parameters:
[in]  typeName  the type name of a depend graph node to query.
Returns:
true if registered, false otherwise.

MTypeId MFnPlugin::matrixTypeIdFromXformId ( const MTypeId xformTypeId,
MStatus ReturnStatus = NULL  
)

The function returns the MTypeId of the matrix when the MTypeId of the corresponding xform is given.

Parameters:
[in]  xformTypeId  the typeId of the transform.
[out]  ReturnStatus  Return status.
Returns:
MTypeId TypeId of the corresponding transformation matrix, if found.

MStringArray MFnPlugin::addMenuItem ( const MString menuItemName,
const MString parentName,
const MString commandName,
const MString commandParams,
bool  needOptionBox = false,
const MString optBoxFunction = NULL,
MStatus retStatus = NULL  
)

The function adds the menuItem to the specified parent, and associates a command with it. Additionally, an option box can be created and a MEL function/command can be added to it. The function returns the names of the new menuItem and the optionBox created.

Parameters:
[in]  menuItemName  This will be used as the label for the menuItem.
[in]  parentName  Name of the parent to which the new menuItem needs to be attached.
[in]  commandName  Command to be attached.
[in]  commandParams  Parameters for the command.
[in]  needOptionBox  Boolean indicating whether an option box is required. Default value is false.
[in]  optBoxFunction  MEL Function to be attached to the option box. If the needOptionBox is false, then this argument will have no effect.
[in]  retStatus  Return status.
Returns:
MStringArray returns the names of the new menuItems created. In case the method fails, and MStringArray has items in it, removeMenuItem() should be called on it to remove the unused UI references.

MStatus MFnPlugin::removeMenuItem ( MStringArray menuItemNames  ) 

The function removes the menuItem and the corresponding option box, if exists, from the UI.

Parameters:
[in]  menuItemNames  Names of the menuItem which needs to be removed.
Returns:
MStatus returns the status of command execution.

MStatus MFnPlugin::registerMaterialInfo ( const MString materialInfoName,
MMaterialInfoFactoryFnPtr  fnPtr  
)

Registers a new material information type with Maya.

Parameters:
[in]  materialInfoName  the new material info generator name.
[in]  fnPtr  pointer to function that return a new instance of material information node.
Returns:

MStatus MFnPlugin::unregisterMaterialInfo ( const MString materialInfoName  ) 

Deregister the specified material info type with Maya.

Parameters:
[in]  materialInfoName  the material info generator name.
Returns:

MStatus MFnPlugin::registerBakeEngine ( const MString bakeEngineGenName,
MBakeEngineCreatorFnPtr  fnPtr  
)

Registers a new bake engine type with Maya.

Parameters:
[in]  bakeEngineGenName  the new bake engine generator name.
[in]  fnPtr  pointer to function that return a new instance of bake engine generator node.
Returns:

MStatus MFnPlugin::unregisterBakeEngine ( const MString bakeEngineGenName  ) 

Deregister the bake engine type with Maya.

Parameters:
[in]  bakeEngineGenName  the bake engine generator name.
Returns:

void MFnPlugin::setRegisteringCallableScript (  )  [static]

Mark this MFnPlugin object as one that will be passed callbacks defined in script.

bool MFnPlugin::registeringCallableScript (  )  [static]

Return true if this MFnPlugin object has its callbacks defined in script.

MStatus MFnPlugin::registerTransform ( const MString typeName,
const MTypeId typeId,
MCreatorFunction  creatorFunction,
MInitializeFunction  initFunction,
MCreatorFunction  xformCreatorFunction,
const MTypeId xformId,
const MString classification = NULL  
)

Obsolete.

This method is obsolete.

Deprecated:
Use the other version of registerTransform instead.

MStatus MFnPlugin::registerUI ( const MString creationProc,
const MString deletionProc,
const MString creationBatchProc = "",
const MString deletionBatchProc = ""  
)

NO SCRIPT SUPPORT.

Sets the names of the mel procedures to be evaled to create and destroy any UI associated with the plugin.

You can use MEL procedure names as arguments to this method as long as the procedure is located in a file named procedure.mel. This works because, as described in the MEL documentation, when MEL is given a undefined procedure, it searchs MAYA_SCRIPT_PATH looking for a file with the name procedure.mel. If it finds such a file it is sourced and if the procedure was defined by the file, it is then executed.

Example: The procedure lassoToolCreateUI will be run when the plugin is loaded, the procedure lassoToolDeleteUI when the plugin is unloaded. This works as long as the MEL procedure lassoToolCreateUI is defined in a file called lassoToolCreateUI.mel and the procedure lassoToolDeleteUI is defined in a file called lassoToolDeleteUI.mel.

MStatus initializePlugin( MObject obj )
{
    MStatus status;

    MFnPlugin plugin( obj, "Autodesk - Example", "1.0", "Any");
    status = plugin.registerContextCommand( "lassoToolContext",
                                            lassoContextCmd::creator );

    if (!status) {
        status.perror("registerContextCommand");
        return status;
    }

    // set the mel procs to be run when the plugin is loaded / unloaded
    status = plugin.registerUI("lassoToolCreateUI", "lassoToolDeleteUI");
    if (!status) {
        status.perror("registerUIScripts");
        return status;
    }

    return status;
}
Parameters:
[in]  creationProc  The name of the procedure to be run when the plug in is loaded
[in]  deletionProc  The name of the procedure to be run when the plug in is unloaded
[in]  creationBatchProc  The name of the procedure to be run when the plug in is loaded in batch mode. The procedure should not contain UI related code.
[in]  deletionBatchProc  The name of the procedure to be run when the plug in is unloaded in batch mode. The procedure should not contain UI related code.
Returns:
  • MS::kSuccess if successful
  • MS::kObjectDoesNotExist if the function set is not attached to an MObject.

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