34 #include "SOP_MergePrimitives.proto.h"
47 using namespace UT::Literal;
48 using namespace HDK_Sample;
50 constexpr
static int theDestInput = 0;
51 constexpr
static int theSrcInput = 1;
62 const UT_StringHolder SOP_MergePrimitives::theSOPTypeName(
"hdk_mergeprimitives"_sh);
71 SOP_MergePrimitives::theSOPTypeName,
72 "HDK Merge Primitives",
73 SOP_MergePrimitives::myConstructor,
74 SOP_MergePrimitives::buildTemplates(),
101 static const char *theDsFile = R
"THEDSFILE(
106 label "Primitive Group"
109 parmtag { "sop_input" "1" }
110 parmtag { "script_action" "import soputils\nkwargs['geometrytype'] = (hou.geometryType.Primitives,)\nkwargs['inputindex'] = 1\nsoputils.selectGroupParm(kwargs)" }
111 parmtag { "script_action_help" "Select geometry from an available viewport.\nShift-click to turn on Select Groups." }
112 parmtag { "script_action_icon" "BUTTONS_reselect" }
118 SOP_MergePrimitives::buildTemplates()
147 return "Destination Geometry";
149 return "Source Geometry";
151 return "Invalid Source";
175 virtual void cook(
const CookParms &cookparms)
const;
189 SOP_MergePrimitives::cookVerb()
const
198 auto &&sopparms = cookparms.
parms<SOP_MergePrimitivesParms>();
262 detail->merge(*src_detail, group);
static PRM_ChoiceList primGroupMenu
virtual SOP_NodeParms * allocParms() const
virtual UT_StringHolder name() const
void setChoiceListPtr(const UT_StringRef &name, PRM_ChoiceList *list)
UT_ErrorSeverity sopAddWarning(int code, const char *msg=0, const UT_SourceLocation *loc=0) const
bool addOperator(OP_Operator *op, std::ostream *err=nullptr)
SOP_MergePrimitivesVerb()
Constructs a PRM_Template list from an embedded .ds file or an istream.
PRM_Template * templates() const
const GA_PrimitiveGroup * parsePrimitiveGroups(const char *pat, const GroupCreator &creator, bool numok=true, bool ordered=false, bool strict=false, GA_Index prim_offset=GA_Index(0), ParseInfo *info=0)
virtual ~SOP_MergePrimitivesVerb()
virtual CookMode cookMode(const SOP_NodeParms *parms) const
static const SOP_NodeVerb::Register< SOP_MergePrimitivesVerb > theVerb
GLenum GLenum GLsizei void * table
GA_API const UT_StringHolder parms
const GU_Detail * inputGeo(exint idx) const
virtual void cook(const CookParms &cookparms) const
This is the function that does the actual work.
void newSopOperator(OP_OperatorTable *table)
GU_DetailHandle & gdh() const
The initial state of gdh depends on the cookMode()
SYS_FORCE_INLINE bool isstring() const