aboutsummaryrefslogtreecommitdiff
path: root/mayaPlug/shaveWriteHairCmd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mayaPlug/shaveWriteHairCmd.cpp')
-rw-r--r--mayaPlug/shaveWriteHairCmd.cpp72
1 files changed, 72 insertions, 0 deletions
diff --git a/mayaPlug/shaveWriteHairCmd.cpp b/mayaPlug/shaveWriteHairCmd.cpp
new file mode 100644
index 0000000..512df5a
--- /dev/null
+++ b/mayaPlug/shaveWriteHairCmd.cpp
@@ -0,0 +1,72 @@
+// Shave and a Haircut
+// (c) 2019 Epic Games
+// US Patent 6720962
+
+#include <stdio.h>
+
+#include <maya/MArgDatabase.h>
+#include <maya/MArgList.h>
+#include <maya/MDagPath.h>
+#include <maya/MFnDependencyNode.h>
+#include <maya/MString.h>
+#include <maya/MSyntax.h>
+
+#include "shaveHairShape.h"
+#include "shaveSDK.h"
+#include "shaveUtil.h"
+#include "shaveWriteHairCmd.h"
+
+const MString shaveWriteHairCmd::commandName = "shaveWriteHair";
+
+
+MSyntax shaveWriteHairCmd::createSyntax()
+{
+ MSyntax syntax;
+
+ syntax.enableEdit(false);
+ syntax.enableQuery(false);
+ syntax.addArg(MSyntax::kString);
+
+ return syntax;
+}
+
+
+MStatus shaveWriteHairCmd::doIt(const MArgList& args)
+{
+ MStatus st;
+ MArgDatabase argdb(syntax(), args, &st);
+
+ if (!st) return st;
+
+ MDagPath hairShape = shaveUtil::getCurrentHairShape();
+
+ if (!hairShape.isValid())
+ {
+ MGlobal::displayError(
+ commandName + ": no currently selected shave node."
+ );
+ return MS::kFailure;
+ }
+
+ MString fileName;
+ argdb.getCommandArgument(0, fileName);
+
+ FILE* f = fopen(fileName.asChar(), "w");
+
+ if (!f)
+ {
+ MGlobal::displayError(
+ commandName + ": cannot write to file '" + fileName + "'."
+ );
+ return MS::kInvalidParameter;
+ }
+
+ fclose(f);
+
+ MFnDependencyNode nodeFn(hairShape.node());
+
+ shaveHairShape* shs = (shaveHairShape*)nodeFn.userNode();
+ SHAVEwrite_hairDISK((char*)fileName.asChar(), shs->getHairNode());
+
+ return st;
+}