#include "nodeCreatedCBCmd.h"
#include <maya/MFnPlugin.h>
#include <maya/MObject.h>
#include <maya/MFnDependencyNode.h>
#include <maya/MFnDagNode.h>
#include <maya/MDGMessage.h>
#include <maya/MArgDatabase.h>
#include <maya/MSyntax.h>
#include <maya/MGlobal.h>
#define kRegisterFlagLong "-register"
#define kRegisterFlag "-r"
#define kUnregisterFlagLong "-unregister"
#define kUnregisterFlag "-u"
#define kFilterFlagLong "-filter"
#define kFilterFlag "-f"
#define kFullDagPathFlagLong "-fullDagPath"
#define kFullDagPathFlag "-fdp"
MCallbackId nodeCreatedCB::sId;
{
stat = registerMelProc( proc, argData.
isFlagSet( kFullDagPathFlag ) );
}
else if ( argData.
isFlagSet( kUnregisterFlag ) ) {
stat = unregisterMelProc( proc );
}
else if ( argData.
isFlagSet( kFilterFlag ) ) {
stat = changeFilter( filter );
}
}
return stat;
}
MStatus nodeCreatedCB::registerMelProc(
MString melProc,
bool fullDagPath )
{
if ( melProc.
length() == 0 ) {
stat.
perror(
"invalid mel callback: " + melProc);
return stat;
}
nodeCreatedCB::sMelProcs.
append( melProc );
nodeCreatedCB::sFullDagPath.
append( fullDagPath );
return stat;
}
{
int numProcs = nodeCreatedCB::sMelProcs.
length();
for ( int i = 0; i < numProcs; i++ ) {
if ( nodeCreatedCB::sMelProcs[i] == melProc ) {
nodeCreatedCB::sMelProcs.
remove(i);
nodeCreatedCB::sFullDagPath.
remove(i);
break;
}
}
if ( !stat ) {
stat.
perror(melProc +
" is not a registered callback.");
}
return stat;
}
{
return stat;
}
void nodeCreatedCB::sCallbackFunc(
MObject& node,
void* clientData )
{
int numProcs = nodeCreatedCB::sMelProcs.
length();
for ( int i = 0; i < numProcs; i++ ) {
MString melCmd = nodeCreatedCB::sMelProcs[i];
if ( nodeCreatedCB::sFullDagPath[i] &&
nodeName = dagObj.fullPathName();
} else {
nodeName = dn.name();
}
melCmd += " \"" + nodeName + "\"";
}
}
{
syntax.
addFlag( kFullDagPathFlag, kFullDagPathFlagLong );
return syntax;
}
void* nodeCreatedCB::creator()
{
return new nodeCreatedCB;
}
{
MFnPlugin plugin( obj, PLUGIN_COMPANY,
"6.0" );
stat = plugin.registerCommand( "nodeCreatedCB",
nodeCreatedCB::creator,
nodeCreatedCB::newSyntax );
if ( !stat )
stat.
perror(
"registerCommand");
return stat;
}
{
stat = plugin.deregisterCommand( "nodeCreatedCB" );
if ( !stat )
stat.
perror(
"deregisterCommand");
nodeCreatedCB::sMelProcs.
clear();
nodeCreatedCB::sFullDagPath.
clear();
return stat;
}