aboutsummaryrefslogtreecommitdiff
path: root/mayaPlug/shaveInfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mayaPlug/shaveInfo.cpp')
-rw-r--r--mayaPlug/shaveInfo.cpp171
1 files changed, 171 insertions, 0 deletions
diff --git a/mayaPlug/shaveInfo.cpp b/mayaPlug/shaveInfo.cpp
new file mode 100644
index 0000000..6e98b21
--- /dev/null
+++ b/mayaPlug/shaveInfo.cpp
@@ -0,0 +1,171 @@
+// Shave and a Haircut
+// (c) 2019 Epic Games
+// US Patent 6720962
+
+#include <maya/MArgDatabase.h>
+#include <maya/MArgList.h>
+#include <maya/MGlobal.h>
+#include <maya/MPxCommand.h>
+#include <maya/MSelectionList.h>
+#include <maya/MSyntax.h>
+#include <maya/MString.h>
+
+#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;
+}