narrowPolyViewer/narrowPolyViewerCmd.cpp

narrowPolyViewer/narrowPolyViewerCmd.cpp
//-
// ==========================================================================
// Copyright 1995,2006,2008 Autodesk, Inc. All rights reserved.
//
// Use of this software is subject to the terms of the Autodesk
// license agreement provided at the time of installation or download,
// or which otherwise accompanies this software in either electronic
// or hard copy form.
// ==========================================================================
//+
// File Name: narrowPolyViewerCmd.cpp
//
// Description:
// A command used for testing multiple camera drawing into a single view.
// See narrowPolyViewerCmd.h for a description.
//
#include "narrowPolyViewerCmd.h"
#include <maya/MItDag.h>
#include <maya/MGlobal.h>
#include <maya/MSyntax.h>
#include <maya/MArgParser.h>
#include <maya/MArgList.h>
#include <maya/MSelectionList.h>
#include <maya/MFnCamera.h>
#include <maya/MIOStream.h>
narrowPolyViewerCmd::narrowPolyViewerCmd()
//
// Description:
// Class constructor.
//
{
}
narrowPolyViewerCmd::~narrowPolyViewerCmd()
//
// Description:
// Class destructor.
//
{
}
void* narrowPolyViewerCmd::creator()
//
// Description:
// Create the command.
//
{
return new narrowPolyViewerCmd();
}
MStatus narrowPolyViewerCmd::appendSyntax()
//
// Description:
// Add syntax to the command. All of the parent syntax is added
// before this call is made.
//
{
MStatus ReturnStatus;
MSyntax theSyntax = syntax(&ReturnStatus);
if (MS::kSuccess != ReturnStatus) {
MGlobal::displayError("Could not get the parent's syntax");
return ReturnStatus;
}
theSyntax.addFlag(kInitFlag,
kInitFlagLong);
theSyntax.addFlag(kResultsFlag,
kResultsFlagLong);
theSyntax.addFlag(kClearFlag,
kClearFlagLong);
theSyntax.addFlag(kToleranceFlag,
kToleranceFlagLong,
return ReturnStatus;
}
MStatus narrowPolyViewerCmd::doEditFlags()
//
// Description:
// Handle edits for flags added by this class.
// If the flag is unknown, return MS::kSuccess and the parent class
// will attempt to process the flag. Returning MS::kUnknownParameter
// will cause the parent class to process the flag.
//
{
MStatus ReturnStatus = MS::kSuccess;
MPx3dModelView *user3dModelView = modelView();
if (NULL == user3dModelView) {
MGlobal::displayError("NULL == user3dModelView!");
return MS::kFailure;
}
if (user3dModelView->viewType() != "narrowPolyViewer") {
MGlobal::displayError("This view is not a narrowPolyViewer");
return MS::kFailure;
}
// This is now safe to do, since the above test passed.
//
narrowPolyViewer *mpView = (narrowPolyViewer *)user3dModelView;
MArgParser argData = parser();
if (argData.isFlagSet(kInitFlag)) {
return initTests(*mpView);
} else if (argData.isFlagSet(kResultsFlag)) {
return testResults(*mpView);
} else if (argData.isFlagSet(kClearFlag)) {
return clearResults(*mpView);
} else if (argData.isFlagSet(kToleranceFlag)) {
double tol;
argData.getFlagArgument(kToleranceFlag, 0, tol);
mpView->tol = tol;
mpView->refresh(true, true);
} else {
return MS::kUnknownParameter;
}
return ReturnStatus;
}
MStatus narrowPolyViewerCmd::doQueryFlags()
//
// Description:
// Don't do anything for the query.
//
{
return ParentClass::doQueryFlags();
}
MStatus narrowPolyViewerCmd::clearResults(narrowPolyViewer &view)
//
// Description:
//
{
view.removeAllCameras();
fCameraList.clear();
return MS::kSuccess;
}
MStatus narrowPolyViewerCmd::initTests(narrowPolyViewer &view)
//
// Description:
//
{
MGlobal::displayInfo("narrowPolyViewerCmd::initTests");
clearResults(view);
// Add every camera into the scene. Don't change the main camera,
// it is OK that it gets reused.
//
MDagPath cameraPath;
MStatus status = MS::kSuccess;
for (; !dagIterator.isDone(); dagIterator.next()) {
if (!dagIterator.getPath(cameraPath)) {
continue;
}
MFnCamera camera(cameraPath, &status);
if (MS::kSuccess != status) {
continue;
}
MGlobal::displayInfo(camera.fullPathName());
fCameraList.append(cameraPath);
}
if (MS::kSuccess !=
view.setCameraList(fCameraList)) {
MGlobal::displayError("Could not set the list of cameras");
return MS::kFailure;
} else {
view.refresh();
}
return MS::kSuccess;
}
MStatus narrowPolyViewerCmd::testResults(narrowPolyViewer &view)
{
cout << "fCameraList.length() = " << fCameraList.length() << endl;
cout << "fCameraList = " << fCameraList << endl;
cout << "view.fTestCameraList.length() = " << view.fTestCameraList.length() << endl;
cout << "view.fTestCameraList = " << view.fTestCameraList << endl;
return MS::kSuccess;
}