// Shave and a Haircut // (c) 2019 Epic Games // US Patent 6720962 #include #include #include #include #include #include #include #include "shaveGlobals.h" #include "shaveHairShape.h" #include "shaveInfo.h" #include "shaveNode.h" #include "shaveSDK.h" static const char* defaultGlobalsFlagShort = "-dg"; static const char* defaultGlobalsFlagLong = "-defaultGlobals"; static const char* globalsFlagShort = "-g"; static const char* globalsFlagLong = "-globals"; static const char* globalsVersionFlagShort = "-gv"; static const char* globalsVersionFlagLong = "-globalsVersion"; static const char* quietFlagShort = "-qt"; static const char* quietFlagLong = "-quiet"; static const char* shaveHairVersionFlagShort = "-shv"; static const char* shaveHairVersionFlagLong = "-shaveHairVersion"; static const char* shaveNodeVersionFlagShort = "-snv"; static const char* shaveNodeVersionFlagLong = "-shaveNodeVersion"; static const char* statDirFlagShort = "-sd"; static const char* statDirFlagLong = "-statDir"; static const char* versionFlagShort = "-v"; static const char* versionFlagLong = "-version"; const MString shaveInfo::commandName("shaveInfo"); shaveInfo::shaveInfo() {} shaveInfo::~shaveInfo() {} void* shaveInfo::createCmd() { return new shaveInfo(); } MSyntax shaveInfo::createSyntax() { MSyntax syntax; syntax.enableEdit(false); syntax.enableQuery(false); syntax.addFlag(defaultGlobalsFlagShort, defaultGlobalsFlagLong); syntax.addFlag(globalsFlagShort, globalsFlagLong, MSyntax::kSelectionItem); syntax.addFlag(globalsVersionFlagShort, globalsVersionFlagLong); syntax.addFlag(quietFlagShort, quietFlagLong); syntax.addFlag(shaveHairVersionFlagShort, shaveHairVersionFlagLong); syntax.addFlag(shaveNodeVersionFlagShort, shaveNodeVersionFlagLong); syntax.addFlag(statDirFlagShort, statDirFlagLong); syntax.addFlag(versionFlagShort, versionFlagLong); return syntax; } MStatus shaveInfo::doIt(const MArgList& argList) { MStatus status; MArgDatabase args(syntax(), argList, &status); if (!status) return status; if (args.isFlagSet(globalsVersionFlagShort)) { setResult(shaveGlobals::kNodeVersion); } else if (args.isFlagSet(shaveHairVersionFlagShort)) { setResult(shaveHairShape::kNodeVersion); } else if (args.isFlagSet(shaveNodeVersionFlagShort)) { setResult(shaveNode::kNodeVersion); } else if (args.isFlagSet(versionFlagShort)) { setResult(SHAVEquery_version()); } else if (args.isFlagSet(statDirFlagShort)) { MString shaveStatDir; MGlobal::executeCommand("shaveGetStatDir", shaveStatDir); setResult(shaveStatDir); } else if (args.isFlagSet(globalsFlagShort)) { // // Get the specified node. // MSelectionList selection; args.getFlagArgument(globalsFlagShort, 0, selection); MObject node(MObject::kNullObj); if (!selection.isEmpty()) selection.getDependNode(0, node); MFnDependencyNode nodeFn(node, &status); // // Make sure that it's a valid shaveGlobals node. // if (node.isNull() || !status || (nodeFn.typeId() != shaveGlobals::id)) { status = MS::kInvalidParameter; if (!args.isFlagSet(quietFlagShort)) { MGlobal::displayError( "The specified object is not a valid shaveGlobals node." ); } } else { // dump attrs MGlobal::displayWarning( "Sorry, this function is not yet supported." ); } } else if (args.isFlagSet(defaultGlobalsFlagShort)) { MSelectionList list; list.add(shaveGlobals::defaultNodeName); MObject node(MObject::kNullObj); list.getDependNode(0, node); MFnDependencyNode nodeFn(node, &status); if (node.isNull() || !status || (nodeFn.typeId() != shaveGlobals::id)) { if (!args.isFlagSet(quietFlagShort)) { MGlobal::displayError( "There is no default shaveGlobals node in the scene." ); } status = MS::kFailure; } else { // dump attrs MGlobal::displayWarning( "Sorry, this function is not yet supported." ); } } return status; }