#include <maya/MArgList.h>
#include <maya/MIntArray.h>
#include <maya/MGlobal.h>
#include <maya/MPlug.h>
#include <maya/MDagMessage.h>
#include <maya/MDGMessage.h>
#include <maya/MModelMessage.h>
#include <maya/MDagPath.h>
#include <maya/MFnDagNode.h>
#include <maya/MFnCameraSet.h>
#include <maya/MCallbackIdArray.h>
#include <maya/MObjectArray.h>
#include "exCameraSet.h"
#include "testExCameraSetCmd.h"
#define kEditFlag "-e"
#define kEditFlagLong "-edit"
#define kQueryFlag "-q"
#define kQueryFlagLong "-query"
#define kActiveFlag "-a"
#define kActiveFlagLong "-active"
#define kCameraFlag "-cam"
#define kCameraFlagLong "-camera"
#define kCreateFlag "-c"
#define kCreateFlagLong "-create"
#define kAppendCameraFlag "-ac"
#define kAppendCameraFlagLong "-appendCamera"
#define kAppendCameraAndSetFlag "-acs"
#define kAppendCameraAndSetFlagLong "-appendCameraAndSet"
#define kDeleteLayerFlag "-d"
#define kDeleteLayerFlagLong "-deleteLayer"
#define kNumLayersFlag "-nl"
#define kNumLayersFlagLong "-numLayers"
#define kLayerFlag "-l"
#define kLayerFlagLong "-layer"
#define kLayerTypeFlag "-lt"
#define kLayerTypeFlagLong "-layerType"
#define kSetFlag "-s"
#define kSetFlagLong "-set"
#define kHelpFlag "-h"
#define kHelpFlagLong "-help"
#define CheckErrorContinue(stat, msg) \
if (MS::kSuccess != stat) { \
displayError(msg); \
continue; \
}
#define CheckErrorReturn(stat, msg) \
if (MS::kSuccess != stat) { \
displayError(msg); \
return; \
}
testExCameraSetCmd::~testExCameraSetCmd() {}
void* testExCameraSetCmd::creator()
{
return new testExCameraSetCmd();
}
{
{
return status;
}
bool nothingSet = ( !createUsed && !appendCameraUsed && !appendCameraAndSetUsed && !deleteLayerUsed && !cameraUsed &&
!layerUsed && !helpUsed && !setUsed && !layerTypeUsed && !numLayersUsed);
if (nothingSet)
{
}
if (helpUsed) {
MGlobal::displayInfo(
"\t-ac -appendCamera <cameraName>: Append a new camera layer to the cameraSet using the specified camera");
MGlobal::displayInfo(
"\t-acs -appendCameraAndSet <cameraName> <setName>: Append a new camera layer to the cameraSet using the specified camera and set");
MGlobal::displayInfo(
"\t-nl -numLayers: Returns the number of layers defined in the specified cameraSet");
MGlobal::displayInfo(
"\t-l -layer <layerIndex>: Specifies the layer index to be used when accessing layer information");
MGlobal::displayInfo(
"\t-lt -layerType [<layerTypeName>]: Set/get the layer type for a particular layer. Possible values are Mono, Left, and Right.");
}
unsigned nObjs = list.length();
if (nObjs == 0)
{
if (createUsed)
{
if (!status)
{
return status;
}
return status;
}
if (appendCameraUsed || appendCameraAndSetUsed || deleteLayerUsed || editUsed || cameraUsed ||
setUsed || layerTypeUsed || activeUsed || numLayersUsed) {
return status;
}
}
else
{
if (createUsed)
{
return status;
}
if (appendCameraUsed)
{
if (nObjs != 1)
{
return status;
}
if (!getExCameraSetNode(dirNode))
{
return status;
}
{
return status;
}
return status;
}
if (appendCameraAndSetUsed)
{
if (nObjs != 1)
{
return status;
}
if (!getExCameraSetNode(dirNode))
{
return status;
}
{
return status;
}
{
return status;
}
dirFn.appendLayer(camPath, setObj);
return status;
}
if (deleteLayerUsed)
{
if (nObjs != 1)
{
return status;
}
if (!getExCameraSetNode(dirNode))
{
return status;
}
dirFn.deleteLayer(cameraLayer);
return status;
}
if (numLayersUsed)
{
if (queryUsed)
{
if (!getExCameraSetNode(dirNode))
{
return status;
}
unsigned int numLayers = dirFn.getNumLayers(&status);
setResult((int)numLayers);
}
else
{
}
return status;
}
if (cameraUsed)
{
if ((nObjs != 1) || (!layerUsed))
{
return status;
}
if (!getExCameraSetNode(dirNode))
{
return status;
}
if (editUsed)
{
{
return status;
}
dirFn.setLayerCamera((unsigned int)cameraLayer, camPath);
}
else if (queryUsed)
{
status = dirFn.getLayerCamera((unsigned int)cameraLayer, camPath);
{
setResult(nodeFn.name());
}
else
setResult("");
}
}
if (setUsed)
{
if ((nObjs != 1) || (!layerUsed))
{
return status;
}
if (!getExCameraSetNode(dirNode))
{
return status;
}
if (editUsed)
{
if (setName != "")
{
{
return status;
}
}
dirFn.setLayerSceneData((unsigned int)cameraLayer, setObj);
}
else if (queryUsed)
{
status = dirFn.getLayerSceneData((unsigned int)cameraLayer, setObj);
{
setResult(nodeFn.name());
}
else
setResult("");
}
}
if (layerTypeUsed)
{
if ((nObjs != 1) || (!layerUsed))
{
return status;
}
if (!getExCameraSetNode(dirNode))
{
return status;
}
exCameraSet *exDir = (exCameraSet *)nodeFn.userNode();
if (editUsed)
{
int pt = -1;
if (layerTypeVal == "Mono")
pt = 0;
else if (layerTypeVal == "Left")
pt = 1;
else if (layerTypeVal == "Right")
pt = 2;
else
{
return status;
}
exDir->setLayerType((unsigned int)cameraLayer, pt);
}
else if (queryUsed)
{
int lt;
status = exDir->getLayerType((unsigned int)cameraLayer, lt);
{
if (lt == 0)
setResult("Mono");
else if (lt == 1)
setResult("Left");
else if (lt == 2)
setResult("Right");
}
else
{
return status;
}
}
}
if (activeUsed)
{
if ((nObjs != 1) || (!layerUsed))
{
return status;
}
if (!getExCameraSetNode(dirNode))
{
return status;
}
if (editUsed)
{
dirFn.setLayerActive((unsigned int)cameraLayer, activeVal);
}
else if (queryUsed)
{
activeVal = dirFn.isLayerActive((unsigned int)cameraLayer, &stat);
setResult(activeVal);
else
}
}
}
return status;
}
{
createUsed = (args.
flagIndex(kCreateFlag, kCreateFlagLong) != MArgList::kInvalidArgIndex);
editUsed = (args.
flagIndex(kEditFlag, kEditFlagLong) != MArgList::kInvalidArgIndex);
queryUsed = (args.
flagIndex(kQueryFlag, kQueryFlagLong) != MArgList::kInvalidArgIndex);
helpUsed = (args.
flagIndex(kHelpFlag, kHelpFlagLong) != MArgList::kInvalidArgIndex);
numLayersUsed = (args.
flagIndex(kNumLayersFlag, kNumLayersFlagLong) != MArgList::kInvalidArgIndex);
if (createUsed || helpUsed)
unsigned int maxArg = args.
length() - 1;
unsigned int activeIndex = args.
flagIndex(kActiveFlag, kActiveFlagLong);
unsigned int appendCameraIndex = args.
flagIndex(kAppendCameraFlag, kAppendCameraFlagLong);
unsigned int appendCameraAndSetIndex = args.
flagIndex(kAppendCameraAndSetFlag, kAppendCameraAndSetFlagLong);
unsigned int cameraIndex = args.
flagIndex(kCameraFlag, kCameraFlagLong);
unsigned int deleteLayerIndex = args.
flagIndex(kDeleteLayerFlag, kDeleteLayerFlagLong);
unsigned int layerIndex = args.
flagIndex(kLayerFlag, kLayerFlagLong);
unsigned int layerTypeIndex = args.
flagIndex(kLayerTypeFlag, kLayerTypeFlagLong);
unsigned int setIndex = args.
flagIndex(kSetFlag, kSetFlagLong);
activeUsed = (activeIndex != MArgList::kInvalidArgIndex);
appendCameraUsed = (appendCameraIndex != MArgList::kInvalidArgIndex);
appendCameraAndSetUsed = (appendCameraAndSetIndex != MArgList::kInvalidArgIndex);
cameraUsed = (cameraIndex != MArgList::kInvalidArgIndex);
deleteLayerUsed = (deleteLayerIndex != MArgList::kInvalidArgIndex);
layerUsed = (layerIndex != MArgList::kInvalidArgIndex);
layerTypeUsed = (layerTypeIndex != MArgList::kInvalidArgIndex);
setUsed = (setIndex != MArgList::kInvalidArgIndex);
bool maxArgUsed = false;
if (activeUsed)
{
if (editUsed)
{
activeVal = args.
asBool((activeIndex+1), &status);
{
return status;
}
if ((layerTypeIndex+1) == maxArg)
maxArgUsed = true;
}
}
if (appendCameraUsed)
{
camName = args.
asString((appendCameraIndex+1), &status);
{
return status;
}
if ((appendCameraIndex+1) == maxArg)
maxArgUsed = true;
}
if (appendCameraAndSetUsed)
{
camName = args.
asString((appendCameraAndSetIndex+1));
setName = args.
asString((appendCameraAndSetIndex+2));
if ((appendCameraAndSetIndex+2) == maxArg)
maxArgUsed = true;
}
if (cameraUsed)
{
if (editUsed)
{
if ((cameraIndex+1) == maxArg)
maxArgUsed = true;
}
}
if (deleteLayerUsed)
{
cameraLayer = args.
asInt(deleteLayerIndex+1);
if ((deleteLayerIndex+1) == maxArg)
maxArgUsed = true;
}
if (layerUsed)
{
cameraLayer = args.
asInt(layerIndex+1);
if ((layerIndex+1) == maxArg)
maxArgUsed = true;
}
if (layerTypeUsed)
{
if (editUsed)
{
layerTypeVal = args.
asString(layerTypeIndex+1);
if ((layerTypeIndex+1) == maxArg)
maxArgUsed = true;
}
}
if (setUsed)
{
if (editUsed)
{
if ((setIndex+1) == maxArg)
maxArgUsed = true;
}
}
if (maxArgUsed)
else
}
bool testExCameraSetCmd::getExCameraSetNode(
MObject &dirObj)
{
list.getDependNode(0, dirNode);
return false;
if (nodeFn.typeId() != exCameraSet::id)
return false;
dirObj = dirNode;
return true;
}