diff options
| author | Ben Marsh <[email protected]> | 2019-10-22 09:07:59 -0400 |
|---|---|---|
| committer | Ben Marsh <[email protected]> | 2019-10-22 09:07:59 -0400 |
| commit | bd0027e737c6512397f841c22786274ed74b927f (patch) | |
| tree | f7ffbdb8f3741bb7f24635616cc189cba5cb865c /mayaPlug/shaveProceduralsCmd.cpp | |
| download | archived-shave-and-a-haircut-bd0027e737c6512397f841c22786274ed74b927f.tar.xz archived-shave-and-a-haircut-bd0027e737c6512397f841c22786274ed74b927f.zip | |
Adding Shave-and-a-Haircut 9.6
Diffstat (limited to 'mayaPlug/shaveProceduralsCmd.cpp')
| -rw-r--r-- | mayaPlug/shaveProceduralsCmd.cpp | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/mayaPlug/shaveProceduralsCmd.cpp b/mayaPlug/shaveProceduralsCmd.cpp new file mode 100644 index 0000000..132f01d --- /dev/null +++ b/mayaPlug/shaveProceduralsCmd.cpp @@ -0,0 +1,174 @@ +// Shave and a Haircut +// (c) 2019 Epic Games +// US Patent 6720962 + +/********************************************************************** + *< + FILE: shaveProceduralsCmd.cpp + + DESCRIPTION: command for registering procedurals + + HISTORY: created 15-06-2011 + + *> + **********************************************************************/ + +#include "shaveProceduralsCmd.h" +#include <maya/MArgDatabase.h> +#include <maya/MGlobal.h> + +#ifdef USE_PROCEDURALS + +/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/ +| Command | +/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ + +MString shaveProceduralsCmd::cmd = "shaveProcedurals"; + +/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/ +| Flags | +/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ + +char* shaveProceduralsCmd::sf_register = "r"; +char* shaveProceduralsCmd::lf_register = "register"; + +char* shaveProceduralsCmd::sf_unregister = "u"; +char* shaveProceduralsCmd::lf_unregister = "unregister"; + +char* shaveProceduralsCmd::sf_total = "t"; +char* shaveProceduralsCmd::lf_total = "total"; + +char* shaveProceduralsCmd::sf_name = "n"; +char* shaveProceduralsCmd::lf_name = "name"; + +/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/ +| Members | +/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ + +MStringArray shaveProceduralsCmd::procedurals; + +/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/ +| Methods | +/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ + +MStatus shaveProceduralsCmd::doIt(const MArgList &maList) +{ + MStatus stat; + + MArgDatabase parser(syntax(),maList,&stat); + if(stat != MStatus::kSuccess) + { + MGlobal::displayError("shaveProceduralsCmd: can not parse arguments."); + return stat; + } + if(parser.isQuery()) + { + if(parser.isFlagSet(sf_total)) + { + setResult((int)procedurals.length()); + return MStatus::kSuccess; + } + else if(parser.isFlagSet(sf_name)) + { + unsigned int idx; + stat = parser.getFlagArgument(sf_name,0,idx); + if(stat == MStatus::kSuccess) + { + if(idx >= procedurals.length()) + { + setResult(""); + MGlobal::displayError("shaveProceduralsCmd: index is out of range."); + return MStatus::kFailure; + } + setResult(procedurals[idx]); + return MStatus::kSuccess; + } + else + { + setResult(""); + MGlobal::displayError("shaveProceduralsCmd: can not get name."); + return MStatus::kFailure; + } + } + + } + else + { + if(parser.isFlagSet(sf_register)) + { + MString name; + stat = parser.getFlagArgument(sf_register,0,name); + if(stat == MStatus::kSuccess && name != "") + { + bool duplicate = false; + for(unsigned int i = 0; i < procedurals.length(); i++) + if(name == procedurals[i]) + { + duplicate = true; + break; + } + if(duplicate) + { + MGlobal::displayWarning(MString("shaveProceduralsCmd: ") + name + " already registered."); + return MStatus::kFailure; + } + procedurals.append(name); + + //trigger shave shapes update there + MGlobal::displayInfo(MString("shaveProceduralsCmd: ") + name + " successfully registered."); + } + else + { + MGlobal::displayError("shaveProceduralsCmd: can not get name."); + return MStatus::kFailure; + } + } + if(parser.isFlagSet(sf_unregister)) + { + MString name; + stat = parser.getFlagArgument(sf_unregister,0,name); + if(stat == MStatus::kSuccess && name != "") + { + int idx = -1; + for(unsigned int i = 0; i < procedurals.length(); i++) + if(name == procedurals[i]) + { + idx = i; + break; + } + if(idx == -1) + { + MGlobal::displayWarning(MString("shaveProceduralsCmd: ") + name + " not found"); + return MStatus::kFailure; + } + procedurals.remove(idx); + + //trigger shave shapes update there + MGlobal::displayInfo(MString("shaveProceduralsCmd: ") + name + " successfully unregistered."); + } + else + { + MGlobal::displayError("shaveProceduralsCmd: can not get name."); + return MStatus::kFailure; + } + } + + } + return MStatus::kSuccess; +} + + +MSyntax shaveProceduralsCmd::newSyntax() +{ + MSyntax syn; + + syn.enableQuery(true); + syn.addFlag(sf_register, lf_register, MSyntax::kString); + syn.addFlag(sf_unregister, lf_unregister, MSyntax::kString); + syn.addFlag(sf_total, lf_total); + syn.addFlag(sf_name, lf_name, MSyntax::kUnsigned); + + return syn; +} + +#endif |