14 #ifndef __SOP_Node_h__
15 #define __SOP_Node_h__
50 class SOP_SoftLockData;
53 class sop_AttributeEvaluator;
106 #define SOP_LOCALVAR_START 1000000
108 #define SOP_APEXUNIGRAPHPROVIDER_TYPE "apex"
132 void *
data=
nullptr)
override;
140 SOP_Node *getOutputSop(
int outputidx,
141 bool fallback_to_display_render =
true);
155 const char *
name)
override;
157 const char *
name)
override;
163 void setVariableOrder(
int detail,
int prim,
167 int getVariableOrder(
int level)
const;
169 int getVariablePrecedence(
int var)
const;
182 int outputidx)
override;
185 void clearLocalVars();
186 void updateLocalVarOffsets();
194 void clearAttributeEvalCaches();
203 theGlobalCaptOverride = flag;
207 return theGlobalCaptOverride;
214 bool setupLocalVars();
219 void resetLocalVarRefs();
221 void setCurGdh(
int index,
223 void clearCurGdh(
int index);
226 void setCurPoint(
int index,
228 void clearCurPoint(
int index);
229 void setCurVertex(
int index,
231 void clearCurVertex(
int index);
232 void setCurPrim(
int index,
234 void clearCurPrim(
int index);
235 void setCurVertexNum(
int index,
237 void clearCurVertexNum(
int index);
264 operator int()
const {
return myIndex; }
272 void addGenericVariable(
const char *varname,
274 const AttribTupleIndexArg &tuple_idx,
277 void addGenericVariable(
const char *varname,
278 const char *attribname,
279 const AttribTupleIndexArg &tuple_idx,
282 void addGenericVariable(
const char *varname,
289 void addGenericVariable(
const GU_Detail *gdp,
292 const char *attribname,
293 const AttribTupleIndexArg &tuple_idx,
296 void addGenericVariable(
int gpdidx,
301 void addSpecificVariable(
const GU_Detail *gdp,
304 const char *attribname,
305 const AttribTupleIndexArg &tuple_idx,
309 void addSpecificVariable(
int gpidx,
316 static int addCustomVariableCallback(
const char *attr,
317 const char *varname,
void *
data);
318 void addCustomVariable(
const char *attr,
319 const char *varname);
321 void cacheVarPtBox(
int gpdidx);
322 void cacheVarPrimBox(
int gpdidx);
356 {
UT_ASSERT(index == 0 || index == 1);
return myCurVtxNum[
index]; }
362 {
UT_ASSERT(local_var_gdp_index == 0 || local_var_gdp_index == 1);
364 return myCurVtxOff[local_var_gdp_index]; }
370 {
UT_ASSERT(index == 0 || index == 1);
if (!myCurGdp[index])
return nullptr;
return myCurGdp[
index]->getGEOPrimitive(myCurPrimOff[index]); }
379 cacheVarPtBox(index);
380 return myCurPtBox[
index];
387 cacheVarPrimBox(index);
388 return myCurPrimBox[
index];
393 void setPivotParmToGroupCentroid(
OP_Context &context);
397 void getGroupMenuHeader(
int sourcenum,
const char * title,
401 const char *prim_header,
402 const char *pt_header,
403 const char *edge_header,
404 const char *vertex_header,
405 PRM_Name *menu_entries,
int themenusize,
407 bool includeselection,
const PRM_Parm *parm,
408 bool include_name_attrib =
true);
411 const char * edge_header,
412 const char *prim_header,
const char *pt_header,
413 const char *vertex_header,
414 PRM_Name *menu_entries,
int themenusize,
415 bool addprim,
int start,
418 static int buildSopBreakpointGroups(
const GU_Detail *
src,
419 const char * brkpt_header,
420 const char * prim_header,
const char *pt_header,
421 const char * edge_header,
422 const char *vertex_header,
423 PRM_Name *choicenames,
int menusize,
424 bool addprim,
int start,
430 static void buildGroupsFromSop(
SOP_Node * src_sop,
434 PRM_Name *menu_entries,
int thelistsize,
435 bool include_name_attrib =
true);
437 static int buildEdgeGroupsFromSop(
SOP_Node * src_sop,
440 bool addprim,
int start,
441 PRM_Name *menu_entries,
int thelistsize );
443 static int buildBreakpointGroupsFromSop(
SOP_Node * src_sop,
446 bool addprim,
int start,
447 PRM_Name *menu_entries,
int thelistsize );
449 void buildNamedPrims(
int thesourcenum,
454 bool numberedvolumes);
456 void buildInputGroups(
int thesourcenum,
460 bool includeselection,
463 int buildInputEdgeGroups(
int sourcenum,
464 PRM_Name *choicenames,
int menusize,
465 bool addprim,
int start,
468 int buildInputBreakpointGroups(
int sourcenum,
469 PRM_Name *choicenames,
int menusize,
470 bool addprim,
int start,
473 OP_LockTypes setModelLock(OP_LockTypes lock_type,
474 void *modeler =
nullptr,
475 bool allow_softlock_promotion =
false,
476 UT_Undo *undo =
nullptr)
override;
481 void *getCookedData(
const OP_Context &ctx)
override;
500 const SOP_Guide *getCookedGuide1()
const;
501 const SOP_Guide *getCookedGuide2()
const;
531 {
return GuideType::VIEWPORT; }
546 void unlockInputs()
override;
549 static void initializeExpressions();
566 bool forceValidGroupPrefix(
UT_String &prefix,
569 void expandGroupMask(
const char *
pattern,
576 { expandGroupMask(pattern, out_names, type, gdp); }
583 bool allow_numeric =
true,
584 bool ordered =
false,
595 {
return parsePrimitiveGroups(pattern,
GroupCreator(gdp,
false),
true,
true); }
598 const GroupCreator &creator,
599 bool allow_numeric =
true,
600 bool ordered =
false,
601 bool strict =
false);
607 bool strict =
false);
609 {
return parsePrimitiveGroupsCopy(pattern,
GroupCreator(gdp,
false),
true,
true); }
612 const GroupCreator &creator,
613 bool allow_numeric =
true,
614 bool ordered =
false,
625 {
return parsePointGroups(pattern,
GroupCreator(gdp,
false),
true,
true); }
628 const GroupCreator &creator,
629 bool allow_numeric =
true,
630 bool ordered =
false,
631 bool strict =
false);
637 bool strict =
false);
639 {
return parsePointGroupsCopy(pattern,
GroupCreator(gdp,
false),
true,
true); }
641 const GA_EdgeGroup *parseEdgeGroups(
const char *pattern,
647 {
return parseEdgeGroups(pattern, (
const GU_Detail *)gdp); }
652 {
return parseEdgeGroupsCopy(pattern, (
const GU_Detail *)gdp); }
659 {
return parseBreakpointGroups(pattern, (
const GU_Detail *)gdp); }
664 {
return parseBreakpointGroupsCopy(pattern,(
const GU_Detail *)gdp);}
671 {
return parseVertexGroups(pattern, (
const GU_Detail *)gdp); }
676 {
return parseVertexGroupsCopy(pattern, (
const GU_Detail *)gdp); }
678 const GA_Group *parseAllGroups(
const char *pattern,
679 const GroupCreator &creator,
680 bool allow_numeric =
true,
681 bool ordered =
false,
685 const GA_Group *parseAllGroups(
const char *pattern,
691 {
return parseAllGroups(pattern,
GroupCreator(gdp,
false),
true,
true); }
693 GA_Group *parseAllGroupsCopy(
const char *pattern,
694 const GroupCreator &creator,
695 bool allow_numeric =
true,
696 bool ordered =
false,
700 GA_Group *parseAllGroupsCopy(
const char *pattern,
706 {
return parseAllGroupsCopy(pattern,
GroupCreator(gdp,
false),
true,
true); }
715 {
return myGroupParse.destroyAdhocGroup(group); }
717 { myGroupParse.destroyAdhocGroups(); }
719 { myGroupParse.destroyAdhocGroups(g); }
726 void updateUserSelectionOnDetail();
739 void clearNodeSelectionSet();
745 void copyCookedSelectionToUserSelection(
OP_Context *context =
nullptr);
757 bool add_to_sel = false);
761 bool add_to_sel = false);
764 bool add_to_sel = false);
766 bool prim_sel = true,
767 bool add_to_sel = false);
768 void selectPoint(
GA_Offset ptoff,
bool point_sel = true,
769 bool add_to_sel = false);
770 void selectFrom(const
GEO_Primitive &prim,
bool sel_prim = true,
771 bool add_to_sel = false);
772 void selectPointsFrom(
GA_Offset ptoff,
bool point_sel = true,
773 bool add_to_sel = false);
775 bool add_to_sel = false);
780 void selectInputGroup(const
GA_Group *group,
785 void selectInputGroup(const
GA_Group *group,
790 void clearSelection();
805 bool destroySelection();
808 bool selectionEnabled()
const
810 return getHighlight();
815 return myHasCookedSelection;
842 static const
char *getGroupTypeName(
GA_GroupType gagrouptype, const
char *guess = "guess");
846 virtual
void resetSimulation () {}
848 void addInstanceReference(
SOP_Node *node);
849 void clearInstanceReference(
SOP_Node *node);
871 virtual void makePreserveRequest();
876 void getNodeSpecificInfoText(
OP_Context &context,
894 bool get_inverse_xform,
923 fpreal getW()
const override;
925 fpreal getH()
const override;
939 void setUniqueId(
int id)
override;
940 void clearUniqueId()
override;
949 {
return myGroupParse.removeAdhocGroup(group); }
951 { myGroupParse.removeAdhocGroups(); }
960 int &copied_input)
override;
982 int alone = 0)
override;
984 void notifyGroupParmListeners(
985 int parm_index,
int group_type_index,
1007 bool alone =
false,
bool do_selection =
true,
1009 int group_type_index = -1,
1010 bool allow_reference =
true,
1011 bool ordered =
false,
1012 bool detached =
true,
1013 int input_index = 0);
1016 bool alone,
bool do_selection,
1018 int group_type_index,
1019 bool allow_reference,
1021 const GroupCreator &creator);
1026 int alone = 0,
bool do_selection =
true,
1027 int input_index = 0,
int parm_index = 0,
1028 int group_type_index = -1,
1029 bool allow_reference =
true,
1030 bool fetchgdp =
true,
1036 bool alone =
false,
bool do_selection =
true,
1038 int group_type_index = -1,
1039 bool allow_reference =
true,
1040 bool ordered =
false,
1041 bool detached =
true,
1042 int input_index = 0);
1045 bool alone,
bool do_selection,
1047 int group_type_index,
1048 bool allow_reference,
1050 const GroupCreator &creator);
1055 int alone = 0,
bool do_selection =
true,
1056 int input_index = 0,
int parm_index = 0,
1057 int group_type_index = -1,
1058 bool allow_reference =
true,
1059 bool fetchgdp =
true,
1065 bool alone =
false,
bool do_selection =
true,
1067 int group_type_index = -1,
1068 bool allow_reference =
true,
1069 int input_index = 0);
1072 bool alone,
bool do_selection,
1074 int group_type_index,
1075 bool allow_reference,
1081 int alone = 0,
bool do_selection =
true,
1082 int input_index = 0,
int parm_index = 0,
1083 int group_type_index = -1,
1088 bool allow_reference =
false,
1089 bool fetchgdp =
true,
1098 bool alone =
false,
bool do_selection =
true,
1100 int group_type_index = -1,
1102 bool allow_reference =
true,
1103 bool is_default_prim =
true,
1104 bool ordered =
false,
1105 bool detached =
true,
1106 int input_index = 0);
1109 bool alone,
bool do_selection,
1111 int group_type_index,
1113 bool allow_reference,
1114 bool is_default_prim,
1116 const GroupCreator &creator);
1121 int alone = 0,
bool do_selection =
true,
1122 int input_index = 0,
int parm_index = 0,
1123 int group_type_index = -1,
1124 bool allow_reference =
false,
1125 bool is_default_prim =
true,
1126 bool fetchgdp =
true,
1136 bool allow_reference,
bool is_default_prim,
1137 bool ordered=
false);
1140 bool allow_reference,
bool is_default_prim);
1149 bool alone,
int input_index,
bool detached,
1150 GroupCreator &creator);
1153 bool alone,
int input_index,
1158 void cookInputGroupsEpilogue(
int parm_index,
int group_type_index,
1160 int input_index,
bool fetchgdp,
bool alone);
1163 void inputConnectChanged(
int which_input)
override;
1173 {
return inputGeo(index); }
1196 { getLockedErrorManager()->systemError(msg);}
1198 const char *msg =
nullptr)
1199 { getLockedErrorManager()->commonError(what, msg);}
1201 const char *msg =
nullptr)
1202 { getLockedErrorManager()->commonWarning(what, msg);}
1294 const char *group_type_parm =
nullptr,
1295 int input_index = 0,
1297 const char *assoc_groups =
nullptr,
1298 GroupSelectAsOrdered ordered =
1299 GroupSelectAsOrdered::AUTO,
1300 const char *use_name_attr=
nullptr,
1301 const char *select_script=
nullptr);
1305 const char *group_type_parm =
nullptr,
1306 int input_index = 0,
1308 const char *assoc_groups =
nullptr,
1309 GroupSelectAsOrdered ordered =
1310 GroupSelectAsOrdered::AUTO,
1311 const char *use_name_attr=
nullptr,
1312 const char *select_script=
nullptr);
1321 void pickPrimitivesUsingPathAttribute(
1324 const char *stringparm,
1326 const char *path_attrib=
"path",
1327 bool use_packed_names=
true);
1330 void pickPrimitivesUsingPathAttribute(
1331 const char *stringparm,
1334 const char *path_attrib=
"path",
1335 bool use_packed_names=
true);
1339 static GA_Range getPickedRangeUsingPathAttribute(
1342 const char *pickedstring,
1343 const char *path_attrib=
"path",
1344 bool use_packed_names=
true);
1348 int parseGroups(
const char *pattern,
1352 bool strict =
false);
1355 int parseGroupsCopy(
const char *pattern,
1361 bool strict =
false,
1379 int fillAttribNameMenu(
PRM_Name *menu_entries,
1384 void *approve_data =
nullptr,
1385 bool decode_tokens =
false);
1388 static void removeMenuDuplicates(
PRM_Name *menu_entries,
int size);
1393 void getVectorAttribs(
const char * attrib_names,
1397 static void getVectorAttribs(
GU_Detail *gdp,
1398 const char * attrib_names,
1405 const char * attrib_string,
1414 const char *l)
override;
1422 int forEachGroupMatchingMask(
1423 const char *pattern,
1424 GroupOperation operation,
1428 bool maintainorder=
false);
1430 static int invokeForEachGroupMatchingMask(
1432 const char *pattern,
1435 bool maintainorder);
1442 static void invokeForSubdivisionOfPrimitiveGroup(
1446 int opstep,
const char *oplabel,
1450 void subdividePrimitiveGroup(
1451 GroupOperation operation,
1453 void *
data,
int optype,
1454 int opstep,
const char *oplabel,
1456 void subdivideMixPrimitiveGroup(
1457 GroupOperation operation,
1459 void *
data,
int optype,
1460 int opstep,
const char *oplabel,
1462 void subdividePointGroup(
1463 GroupOperation operation,
1465 void *
data,
int optype,
1466 int opstep,
const char *oplabel,
1473 const char *p=
"adhoc")
1474 {
return myGroupParse.createPrimitiveGroup(geo, p); }
1476 const char *p=
"adhoc")
1477 {
return myGroupParse.createPointGroup(geo, p); }
1479 const char *p=
"adhoc")
1480 {
return myGroupParse.createEdgeGroup(geo, p); }
1482 const char *p=
"adhoc")
1483 {
return myGroupParse.createVertexGroup(geo, p); }
1486 return myGroupParse.appendAdhocGroup(
1503 return myGroupParse.createBreakpointGroup(geo);
1513 void clearInstance(
int duplicate = 0);
1515 bool hasInstances();
1517 int countInstances();
1519 void clearAllInstances();
1538 return duplicateSource(index, context, gdp,
true);
1555 bool wattrib =
true,
1556 bool *fully =
nullptr);
1559 return duplicatePointSource(index, ctx, gdp, 1,
1566 bool copyPointPosFromSource(
1572 int *changed =
nullptr,
bool force=
false);
1581 void resetChangedSourceFlags();
1582 void resetChangedSourceFlags(
int which_input);
1602 return myInputChangeHelper.useInput(
1603 *
this, idx, changed, force);
1606 void deleteCookedData()
override;
1607 int deleteNodeData(
void *)
override;
1610 void convertPivotAboutGroupCentroid(
1614 void convertPivotAboutGroupCentroid(
1616 const char *pivot_parm_name,
1631 const char *path_prefix,
1636 const char *
path=
nullptr)
override;
1663 OP_ERROR saveIntrinsic(std::ostream &os,
1667 short class_id,
short sig,
1668 const char *
path=
nullptr)
override;
1669 bool loadPacket(
UT_IStream &is,
const char *token,
1670 const char *
path=
nullptr)
override;
1672 void clearAndDestroy()
override;
1674 int saveCookedData(
const char *,
1676 int saveCookedData(std::ostream &os,
1678 int binary = 0)
override;
1680 const char *
path=
nullptr)
override;
1685 bool loadHardCookedData(
UT_IStream &is,
const char *
path=
nullptr);
1687 const char *getFileExtension(
int binary)
const override;
1689 bool softLockable(
const GU_Detail &unmodelled_gdp,
1696 SOP_SoftLockData *old_slockdata=
nullptr);
1699 void *myVisualizeCallbackData;
1708 virtual void unloadDataHack();
1713 bool unloadData()
override;
1716 void clearVerbCache();
1720 int64 getMemoryUsage(
bool inclusive)
const override;
1725 virtual int64 getLoadedMemoryUsage()
const;
1728 bool isLoaded()
const override;
1731 bool shouldUnload()
const;
1747 static void markDetailDirty(
GU_Detail *dirtygdp,
1748 bool bumpalldataid);
1770 friend class SOP_CacheData;
1771 friend class sop_AttributeEvaluator;
1776 SOP_SoftLockData *mySoftLockData;
1778 bool myHasCookedSelection;
1784 static bool theGlobalCaptOverride;
1796 { myUsesSOPLocalVar =
true; }
1799 const char *
name)
override;
1800 void getAttributeEvaluatorNames(
1804 bool hasTransformTracks()
const override;
1805 bool evaluateTransformTracks(
OP_Context &context,
1807 bool evaluateTransformTracksTargets(
OP_Context &context,
1841 int myCurBuiltPtBox[2];
1843 int myCurBuiltPrimBox[2];
1856 int myAttribCacheOffsetGdpId[2];
1857 int myAttribCacheOffsetMetaCacheCount[2];
1858 unsigned int myAttribCacheTotalDictSize[2];
1868 friend class sop_NodeInputs;
static PRM_ChoiceList primGroupMenu
GA_VertexGroup * parseVertexGroupsCopy(const char *pattern)
virtual UT_StringHolder getUniGraphProviderType(bool allow_cook)
static PRM_ChoiceList onnxDTypeMenu
virtual void setVisualization(bool)
GT_API const UT_StringHolder selection
typedef int(APIENTRYP RE_PFNGLXSWAPINTERVALSGIPROC)(int)
int curVertexNum(int index) const
Definition of a geometry attribute.
static PRM_ChoiceList pointAttribReplaceMenu
GA_VertexGroup * createAdhocVertexGroup(GU_Detail &geo, const char *p="adhoc")
static PRM_ChoiceList allGroupMenu
static PRM_ChoiceList vertexTextureCoordMenu
static PRM_SpareData theFourthInput
GA_PrimitiveGroupUPtr createDetachedPrimitiveGroup() const
static PRM_ChoiceList onnxProviderMenu
virtual const SOP_NodeVerb * cookVerb() const
GLdouble GLdouble GLint GLint const GLdouble * points
#define SYS_DEPRECATED(__V__)
GA_StorageClass myStorageClass
GA_ROAttributeRef myOffset
const GA_Group * parseAllGroups(const char *pattern)
static PRM_ChoiceList edgeGroupReplaceMenu
virtual OP_UniGraphProvider * getUniGraphProvider()
GA_Offset curVertex(int local_var_gdp_index) const
GA_PointGroup * createAdhocPointGroup(const GEO_Detail &geo)
static PRM_ChoiceList namedPrimsMenu
static PRM_ChoiceList namedVolumesGlobMenu
Class which stores the default values for a GA_Attribute.
#define SYS_VISIBILITY_EXPORT
getFileOption("OpenEXR:storage") storage
UT_StringMap< sop_AttributeEvaluator * > myAttributeEvaluatorCache
Stores the @ cache lookups generated JIT.
GT_API const UT_StringHolder time
#define SYS_DEPRECATED_PUSH_DISABLE()
const GA_PrimitiveGroup * parsePrimitiveGroups(const char *pattern)
static PRM_ChoiceList allAttribMenu
GA_AttributeOwner myDictionary
#define SYS_DEPRECATED_POP_DISABLE()
static PRM_ChoiceList groupNameMenu
GLsizei const GLfloat * value
virtual GuideType getGuideType(int guide_idx)
#define SYS_DEPRECATED_HDK_REPLACE(__V__, __R__)
const GLuint GLenum const void * binary
void destroyAdhocGroups(const GU_Detail *g)
GLsizei const GLchar *const * path
static PRM_ChoiceList breakpointGroupMenu
int removeAdhocGroup(const GA_Group *group)
static PRM_ChoiceList pointAttribMenu
static PRM_ChoiceList primGroupReplaceMenu
bool useInputSource(unsigned idx, bool &changed, bool force)
Mark the given input as used for cooking by this node.
static PRM_ChoiceList edgePointGroupReplaceMenu
static PRM_ChoiceList primNamedGroupMenu
Parameters for OP_Node::getInfoText()/OP_Node::getNodeSpecificInfoText()
void addMessage(SOP_ErrorCodes code, const char *msg=nullptr)
fpreal(SOP_Node::* SOP_LocalVarFunc)(sopVarInfo *varinfo)
static PRM_SpareData theSecondElseFirstInput
UT_SharedPtr< GU_SelectionSet > GU_SelectionSetHandle
GU_DetailHandle myGdpHandle
void addCommonWarning(UT_CommonErrorCode what, const char *msg=nullptr)
void addError(int code, const char *msg=nullptr)
static PRM_ChoiceList primNamedGroupReplaceMenu
const GEO_Primitive * curPrim(int index) const
const GA_PointGroup * parsePointGroups(const char *pattern)
static PRM_ChoiceList pointGroupMenu
OP_Network * getCreator() const
static PRM_ChoiceList allGroupReplaceMenu
bool hasCookedSelection() const
#define GA_INVALID_OFFSET
static PRM_ChoiceList pointNamedGroupMenu
virtual const CH_LocalVariable * resolveExtraVariableForSyntaxHighlight(const char *name)
A range of elements in an index-map.
GA_EdgeGroup * parseEdgeGroupsCopy(const char *pattern)
A string map of attributes to ease backward compatibility In the GB/GEO/GU library code would often p...
GA_Offset curPoint(int index) const
void opChanged(OP_EventType reason, void *data=nullptr) override
#define SYS_DEPRECATED_REPLACE(__V__, __R__)
GA_PointGroupUPtr createDetachedPointGroup() const
SYS_VISIBILITY_EXPORT void newSopOperator(OP_OperatorTable *table)
const GU_DetailHandle & curGdh(int index) const
void expandGroupMask(const char *pattern, UT_String &out_names, GA_GroupType type)
static PRM_SpareData theFirstInput
GLint GLint GLsizei GLint GLenum GLenum type
static PRM_ChoiceList edgePointGroupMenu
SYS_FORCE_INLINE const X * cast(const InstancablePtr *o)
static PRM_ChoiceList vertexNamedGroupMenu
int myLocalVarOrderCache
Cached values so we can tell if we have to rebuild.
static PRM_ChoiceList namedVolumesMenu
void addFatal(SOP_ErrorCodes code, const char *msg=nullptr)
void destroyAdhocGroups()
vint4 select(const vbool4 &mask, const vint4 &a, const vint4 &b)
const GU_Detail * inputGeo(int index, OP_Context &)
This class provides a way to manage a reference to an attribute permitting Read-Only access...
GOP_Manager::GroupCreator GroupCreator
Typedef to help make use of GroupCreator less verbose.
static PRM_ChoiceList namedPrimsGlobMenu
GA_VertexGroup * createAdhocVertexGroup(const GEO_Detail &geo)
SOP_NodeCache * myNodeVerbCache
void addCommonError(UT_CommonErrorCode what, const char *msg=nullptr)
static bool getCaptureOverrideFlag()
GA_EdgeGroupUPtr createDetachedEdgeGroup() const
SOP_API int SOPlookupGroupInput(const PRM_SpareData *spare)
UT_ValArray< sopVarInfo * > myLocalVarArray
GA_EdgeGroup * createAdhocEdgeGroup(GU_Detail &geo, const char *p="adhoc")
static PRM_ChoiceList groupReplaceMenu
virtual GOP_GuideListType getGuideListType() const
virtual bool addOrMoveVisualizerToOutput(int outputidx)
static PRM_ChoiceList primAttribReplaceMenu
static PRM_ChoiceList breakpointGroupReplaceMenu
UT_BoundingBox curPointBBox(int index)
sopVarInfo * mySecondaryVariable
GA_PointGroup * parsePointGroupsCopy(const char *pattern)
int isCookingRender() const override
GLuint const GLchar * name
SOP_API void SOPfillMetaKernelMenu(void *, PRM_Name *names, int size, const PRM_SpareData *, const PRM_Parm *)
int destroyAdhocGroup(const GA_Group *group)
static PRM_ChoiceList primEdgePointGroupMenu
virtual const CH_LocalVariable * resolveVariable(const char *name)
GA_BreakpointGroup * parseBreakpointGroupsCopy(const char *pattern)
std::function< T > UT_Function
GA_Size GA_Index
Define the strictness of GA_Offset/GA_Index.
virtual bool getGroupCentroid(OP_Context &, UT_Vector3 &)
static PRM_ChoiceList detailAttribReplaceMenu
GA_PrimitiveGroup * createAdhocPrimGroup(GU_Detail &geo, const char *p="adhoc")
UT_SharedPtr< GU_Selection > GU_SelectionHandle
virtual void setForceCapture(bool)
const GA_VertexGroup * parseVertexGroups(const char *pattern)
GLenum GLenum GLsizei void * table
virtual OP_OpTypeId getOpTypeID() const
static PRM_ChoiceList groupMenu
static PRM_ChoiceList primEdgePointGroupReplaceMenu
SOP_API void SOPgetVexReservedTemplateLists(UT_ValArray< PRM_Template * > &tplatelists)
GT_API const UT_StringHolder version
static PRM_ChoiceList edgeGroupMenu
void setUsesSOPLocalVar()
const GU_Detail * curGdp(int index) const
GA_VertexGroupUPtr createDetachedVertexGroup() const
static PRM_ChoiceList vertexAttribReplaceMenu
static PRM_ChoiceList vertexAttribMenu
AttribTupleIndexArg(int index)
const SOP_NodeFlags & getFlags() const
virtual const char * getChildType() const
static PRM_ChoiceList pointNamedGroupReplaceMenu
**Note that the tasks the is the thread number *for the or if it s being executed by a non pool thread(this *can happen in cases where the whole pool is occupied and the calling *thread contributes to running the work load).**Thread pool.Have fun
virtual bool shouldResetGeoToEmpty() const
GA_API const UT_StringHolder parms
Parameters for OP_Node::fillInfoTree()/OP_Node::fillInfoTreeNodeSpecific()
static PRM_ChoiceList primAttribMenu
static PRM_ChoiceList edgeNamedGroupReplaceMenu
void sopVisualizeCallback(void *, SOP_Node *, OP_Context &, GU_Detail *)
static void setCaptureOverrideFlag(bool flag)
bool isSelectionOwnerType() const overridefinal
SIM_API const UT_StringHolder force
bool usesFootprint() const override
static PRM_ChoiceList edgeNamedGroupMenu
virtual GU_DetailHandle cookMyGuide(int guide_idx, OP_Context &context)
SOP_LocalVarFunc myCallback
GA_Group * parseAllGroupsCopy(const char *pattern)
GA_GroupType
An ordinal enum for the different types of groups in GA.
const GA_BreakpointGroup * parseBreakpointGroups(const char *pattern)
GA_PrimitiveGroup * parsePrimitiveGroupsCopy(const char *pattern)
SOP_NodeParms * myNodeVerbParms
virtual const char * getOpType() const
void addSystemError(const char *msg=nullptr)
UT_SymbolMap< sopVarInfo * > myLocalVarTable
Local variable items:
A global error manager scope.
static PRM_ChoiceList detailAttribMenu
GA_PrimitiveGroup * createAdhocPrimGroup(const GEO_Detail &geo)
virtual OP_OpTypeId getChildTypeID() const =0
static PRM_SpareData theThirdInput
**If you just want to fire and args
GA_PointGroup * createAdhocPointGroup(GU_Detail &geo, const char *p="adhoc")
virtual bool evalVariableValue(UT_String &val, int index, int thread)
OP_ERROR duplicatePointSource(unsigned index, OP_Context &ctx)
virtual bool isGuideTimeDep(int guide_idx) const
static PRM_ChoiceList pointGroupReplaceMenu
virtual int isCookingRender() const
static PRM_ChoiceList vertexNamedGroupReplaceMenu
static PRM_SpareData theSecondInput
virtual int getNumGuides()
UT_BoundingBox curPrimBBox(int index)
const GA_EdgeGroup * parseEdgeGroups(const char *pattern)
static PRM_ChoiceList allAttribReplaceMenu
void addWarning(SOP_ErrorCodes code, const char *msg=nullptr)
GA_BreakpointGroup * createAdhocBreakpointGroup(const GEO_Detail &geo)
OP_ERROR duplicateSource(unsigned index, OP_Context &context)
static PRM_ChoiceList allTextureCoordMenu
OIIO_UTIL_API std::string extension(string_view filepath, bool include_dot=true) noexcept
GA_EdgeGroup * createAdhocEdgeGroup(const GEO_Detail &geo)
virtual void clearCache()
GA_Offset curPrimOff(int index) const