#include <stdio.h>
#include <maya/MIOStream.h>
#include <maya/MGlobal.h>
#include <maya/MString.h>
#include <maya/MFnPlugin.h>
#include <maya/MItDag.h>
#include <maya/MDagPath.h>
#include <maya/MFnDagNode.h>
#include <maya/MFnMesh.h>
#include <maya/MSelectionList.h>
#include <maya/M3dView.h>
#include <maya/MObjectListFilter.h>
{
public:
viewObjectFilter(
const MString &name )
, mInvertedList(false)
{
}
virtual ~viewObjectFilter()
{
}
{
}
{
}
bool mInvertedList;
};
{
bool debugFilterUsage = false;
if (debugFilterUsage)
{
if (viewCount)
{
for (unsigned int i=0; i<viewCount; i++)
{
{
{
printf("*** Update filter list %s. Exclusion=%d, Inverted=%d\n",
mInvertedList);
}
}
}
}
}
if (mInvertedList)
{
for ( ; !dagIterator.isDone(); dagIterator.next() )
{
status = dagIterator.getPath(dagPath);
{
status.
perror(
"MItDag::getPath");
continue;
}
{
dagIterator.prune();
continue;
}
{
status = list.
add( dagPath );
}
}
}
else
{
MItDag dagIterator( traversalType, filter, &status);
for ( ; !dagIterator.isDone(); dagIterator.next() )
{
status = dagIterator.getPath(dagPath);
{
status.
perror(
"MItDag::getPath");
continue;
}
status = list.
add( dagPath );
{
status.
perror(
"MSelectionList add");
}
}
}
{
}
}
static viewObjectFilter *inclusionFilter = NULL;
static viewObjectFilter *exclusionFilter = NULL;
{
MFnPlugin plugin( obj, PLUGIN_COMPANY,
"1.0",
"Any");
MString inclusionName(
"myIncludeFilter");
MString inclusionNameUI(
"My Include Filter");
inclusionFilter = new viewObjectFilter(inclusionName);
MString exclusionName(
"myExcludeFilter");
MString exclusionNameUI(
"My Exclude Filter");
exclusionFilter = new viewObjectFilter(exclusionName);
if (inclusionFilter && exclusionFilter)
{
inclusionFilter->setUIName( inclusionNameUI );
exclusionFilter->setUIName( exclusionNameUI );
bool performInversionManually = false;
if (performInversionManually)
{
exclusionFilter->mInvertedList = true;
}
else
{
}
}
{
status1.
perror(
"Failed to register object filters properly");
if (inclusionFilter)
{
delete inclusionFilter;
inclusionFilter = NULL;
}
if (exclusionFilter)
{
delete exclusionFilter;
exclusionFilter = NULL;
}
}
}
{
if (inclusionFilter)
{
{
status.
perror(
"Failed to deregister object inclusion filter properly.");
}
delete inclusionFilter;
inclusionFilter = NULL;
}
if (exclusionFilter)
{
{
status.
perror(
"Failed to deregister object exclusion filter properly.");
}
delete exclusionFilter;
exclusionFilter = NULL;
}
return deregistered;
}