#ifndef pluginImpl_h #define pluginImpl_h // Shave and a Haircut // (c) 2019 Epic Games // US Patent 6720962 // // Some macros to make the source code a bit more readable. // #define REGISTER_CMD(cmd) \ st = plugin.registerCommand( \ cmd::commandName, cmd::createCmd, cmd::createSyntax \ ); \ if (!st) \ { \ MGlobal::displayError( \ MString("registering the '") + cmd::commandName \ + "' command: " + st.errorString() \ ); \ shaveUninitializePlugin(obj); \ RETURN(st); \ } \ cmd##_isRegistered = true; #define DEREGISTER_CMD(cmd) \ if (cmd##_isRegistered) \ { \ cmd##_isRegistered = false; \ st = plugin.deregisterCommand(cmd::commandName); \ if (!st) \ { \ MGlobal::displayError( \ MString("deregistering the '") + cmd::commandName \ + "' command: " + st.errorString() \ ); \ RETURN(st); \ } \ } #define REGISTER_CTX_CMD(cmd) \ st = plugin.registerContextCommand( \ cmd::commandName, cmd::createCmd \ ); \ if (!st) \ { \ MGlobal::displayError( \ MString("registering the '") + cmd::commandName \ + "' context command: " + st.errorString() \ ); \ shaveUninitializePlugin(obj); \ RETURN(st); \ } \ cmd##_isRegistered = true; #define DEREGISTER_CTX_CMD(cmd) \ if (cmd##_isRegistered) \ { \ cmd##_isRegistered = false; \ st = plugin.deregisterContextCommand(cmd::commandName); \ if (!st) \ { \ MGlobal::displayError( \ MString("deregistering the '") + cmd::commandName \ + "' context command: " + st.errorString() \ ); \ RETURN(st); \ } \ } #define REGISTER_DATA(data) \ st = plugin.registerData(data::dataTypeName, data::dataTypeId, data::creator); \ if (!st) \ { \ MGlobal::displayError( \ MString("registering the '") + data::dataTypeName \ + "' data type: " + st.errorString() \ ); \ RETURN(st); \ } \ data##_isRegistered = true; #define DEREGISTER_DATA(data) \ st = plugin.deregisterData(data::dataTypeId); \ if (!st) \ { \ data##_isRegistered = false; \ MGlobal::displayError( \ MString("deregistering the '") + data::dataTypeName \ + "' data type: " + st.errorString() \ ); \ RETURN(st); \ } \ #define REGISTER_NODE(node,type,classification) \ st = plugin.registerNode( \ node::nodeTypeName, \ node::id, \ node::creator, \ node::initialize, \ MPxNode::type, \ classification \ ); \ if (!st) \ { \ MGlobal::displayError( \ MString("registering the '") + node::nodeTypeName \ + "' node: " + st.errorString() \ ); \ shaveUninitializePlugin(obj); \ RETURN(st); \ } \ node##_isRegistered = true; \ #define DEREGISTER_NODE(node) \ if (node##_isRegistered) \ { \ node##_isRegistered = false; \ st = plugin.deregisterNode(node::id); \ if (!st) \ { \ MGlobal::displayError( \ MString("deregistering the '") + node::nodeTypeName \ + "' node: " + st.errorString() \ ); \ RETURN(st); \ } \ } #define REGISTER_MANIP(node) \ st = plugin.registerNode( \ node::nodeTypeName, \ node::id, \ node::creator, \ node::initialize, \ MPxNode::kManipContainer \ ); \ if (!st) \ { \ MGlobal::displayError( \ MString("registering the '") + node::nodeTypeName \ + "' manip: " + st.errorString() \ ); \ shaveUninitializePlugin(obj); \ RETURN(st); \ } \ node##_isRegistered = true; \ #define DEREGISTER_MANIP(node) DEREGISTER_NODE(node) #define REGISTER_SHAPE(node,ui) \ st = plugin.registerShape( \ node::nodeTypeName, \ node::id, \ node::creator, \ node::initialize, \ ui::creator \ ); \ if (!st) \ { \ MGlobal::displayError( \ MString("registering the '") + node::nodeTypeName \ + "' shape: " + st.errorString() \ ); \ shaveUninitializePlugin(obj); \ RETURN(st); \ } \ node##_isRegistered = true; \ #define DEREGISTER_SHAPE(node) DEREGISTER_NODE(node) #endif