14 #ifndef __SOP_Node_h__ 
   15 #define __SOP_Node_h__ 
   50 class SOP_SoftLockData;
 
   53 class sop_AttributeEvaluator;
 
  105 #define SOP_LOCALVAR_START      1000000 // Start of local variable indices 
  129                                            void *
data=
nullptr) 
override;
 
  137     SOP_Node                    *getOutputSop(
int outputidx,
 
  138                                         bool fallback_to_display_render = 
true);
 
  146             const char *
name) 
override;
 
  148             const char *
name) 
override;
 
  154     void                         setVariableOrder(
int detail, 
int prim, 
 
  158     int                          getVariableOrder(
int level) 
const;
 
  160     int                          getVariablePrecedence(
int var) 
const;
 
  173                                         int outputidx) 
override;
 
  176     void                         clearLocalVars();
 
  177     void                         updateLocalVarOffsets();
 
  185     void                         clearAttributeEvalCaches();
 
  194                                             theGlobalCaptOverride = flag;
 
  198                                             return theGlobalCaptOverride; 
 
  205     bool                         setupLocalVars();
 
  210     void                         resetLocalVarRefs();
 
  212     void                         setCurGdh(
int index,
 
  214     void                         clearCurGdh(
int index);
 
  217     void                         setCurPoint(
int index,
 
  219     void                         clearCurPoint(
int index);
 
  220     void                         setCurVertex(
int index,
 
  222     void                         clearCurVertex(
int index);
 
  223     void                         setCurPrim(
int index,
 
  225     void                         clearCurPrim(
int index);
 
  226     void                         setCurVertexNum(
int index,
 
  228     void                         clearCurVertexNum(
int index);
 
  255             operator int()
 const { 
return myIndex; }
 
  263     void                         addGenericVariable(
const char *varname,
 
  265                                         const AttribTupleIndexArg &tuple_idx,
 
  268     void                         addGenericVariable(
const char *varname, 
 
  269                                         const char *attribname,
 
  270                                         const AttribTupleIndexArg &tuple_idx,
 
  273     void                         addGenericVariable(
const char *varname,
 
  280     void                         addGenericVariable(
const GU_Detail *gdp, 
 
  283                                         const char *attribname,
 
  284                                         const AttribTupleIndexArg &tuple_idx,
 
  287     void                         addGenericVariable(
int gpdidx,
 
  292     void                         addSpecificVariable(
const GU_Detail *gdp, 
 
  295                                         const char *attribname,
 
  296                                         const AttribTupleIndexArg &tuple_idx,
 
  300     void                         addSpecificVariable(
int gpidx,
 
  307     static int                   addCustomVariableCallback(
const char *attr,
 
  308                                         const char *varname, 
void *
data);
 
  309     void                         addCustomVariable(
const char *attr,
 
  310                                         const char *varname);
 
  312     void                         cacheVarPtBox(
int gpdidx);
 
  313     void                         cacheVarPrimBox(
int gpdidx);
 
  347     { 
UT_ASSERT(index == 0 || index == 1); 
return myCurVtxNum[
index]; }
 
  353     { 
UT_ASSERT(local_var_gdp_index == 0 || local_var_gdp_index == 1);
 
  355       return myCurVtxOff[local_var_gdp_index]; }
 
  361     { 
UT_ASSERT(index == 0 || index == 1); 
if (!myCurGdp[index]) 
return nullptr; 
return myCurGdp[
index]->getGEOPrimitive(myCurPrimOff[index]); }
 
  370         cacheVarPtBox(index);
 
  371         return myCurPtBox[
index];
 
  378         cacheVarPrimBox(index);
 
  379         return myCurPrimBox[
index];
 
  384     void                 setPivotParmToGroupCentroid(
OP_Context &context);
 
  388     void                getGroupMenuHeader(
int sourcenum, 
const char * title,
 
  392                                 const char *prim_header,
 
  393                                 const char *pt_header,
 
  394                                 const char *edge_header,
 
  395                                 const char *vertex_header,
 
  396                                 PRM_Name *menu_entries, 
int themenusize,
 
  398                                 bool includeselection, 
const PRM_Parm *parm,
 
  399                                 bool include_name_attrib = 
true);
 
  402                                 const char * edge_header,
 
  403                                 const char *prim_header, 
const char *pt_header,
 
  404                                 const char *vertex_header,
 
  405                                 PRM_Name *menu_entries, 
int themenusize, 
 
  406                                 bool addprim, 
int start,
 
  409     static int          buildSopBreakpointGroups(
const GU_Detail *
src,
 
  410                                 const char * brkpt_header,
 
  411                                 const char * prim_header, 
const char *pt_header,
 
  412                                 const char * edge_header,
 
  413                                 const char *vertex_header,
 
  414                                 PRM_Name *choicenames, 
int menusize, 
 
  415                                 bool addprim, 
int start,
 
  421     static void          buildGroupsFromSop( 
SOP_Node * src_sop, 
 
  425                                     PRM_Name *menu_entries, 
int thelistsize,
 
  426                                     bool include_name_attrib = 
true);
 
  428     static int           buildEdgeGroupsFromSop( 
SOP_Node * src_sop, 
 
  431                                     bool addprim, 
int start,
 
  432                                     PRM_Name *menu_entries, 
int thelistsize );
 
  434     static int           buildBreakpointGroupsFromSop( 
SOP_Node * src_sop, 
 
  437                                     bool addprim, 
int start,
 
  438                                     PRM_Name *menu_entries, 
int thelistsize );
 
  440     void                 buildNamedPrims(
int thesourcenum,
 
  445                                         bool numberedvolumes);
 
  447     void                 buildInputGroups(
int thesourcenum,
 
  451                                         bool includeselection,
 
  454     int                  buildInputEdgeGroups(
int sourcenum,
 
  455                                         PRM_Name *choicenames, 
int menusize,
 
  456                                         bool addprim, 
int start,
 
  459     int                  buildInputBreakpointGroups(
int sourcenum, 
 
  460                                         PRM_Name *choicenames, 
int menusize,
 
  461                                         bool addprim, 
int start,
 
  464     OP_LockTypes         setModelLock(OP_LockTypes lock_type, 
 
  465                                       void *modeler = 
nullptr,
 
  466                                       bool allow_softlock_promotion = 
false,
 
  467                                       UT_Undo *undo = 
nullptr) 
override;
 
  472     void                *getCookedData(
const OP_Context &ctx) 
override;
 
  491     const SOP_Guide     *getCookedGuide1() 
const;
 
  492     const SOP_Guide     *getCookedGuide2() 
const;
 
  522                             { 
return GuideType::VIEWPORT; }
 
  537     void                 unlockInputs() 
override;
 
  540     static void          initializeExpressions();
 
  557     bool                 forceValidGroupPrefix(
UT_String &prefix,
 
  560     void                 expandGroupMask(
const char *
pattern,
 
  567                          { expandGroupMask(pattern, out_names, type, gdp); }
 
  574                                                       bool allow_numeric = 
true,
 
  575                                                       bool ordered = 
false,
 
  586                                  { 
return parsePrimitiveGroups(pattern, 
GroupCreator(gdp, 
false), 
true, 
true); }
 
  589                                                           const GroupCreator &creator,
 
  590                                                           bool allow_numeric = 
true,
 
  591                                                           bool ordered = 
false,
 
  592                                                           bool strict = 
false);
 
  598                                                           bool strict = 
false);
 
  600                                  { 
return parsePrimitiveGroupsCopy(pattern, 
GroupCreator(gdp, 
false), 
true, 
true); }
 
  603                                                   const GroupCreator &creator,
 
  604                                                   bool allow_numeric = 
true,
 
  605                                                   bool ordered = 
false,
 
  616                                  { 
return parsePointGroups(pattern, 
GroupCreator(gdp, 
false), 
true, 
true); }
 
  619                                                   const GroupCreator &creator,
 
  620                                                   bool allow_numeric = 
true,
 
  621                                                   bool ordered = 
false,
 
  622                                                   bool strict = 
false);
 
  628                                                   bool strict = 
false);
 
  630                                  { 
return parsePointGroupsCopy(pattern, 
GroupCreator(gdp, 
false), 
true, 
true); }
 
  632     const GA_EdgeGroup          *parseEdgeGroups(
const char *pattern,
 
  638                                  { 
return parseEdgeGroups(pattern, (
const GU_Detail *)gdp); }
 
  643                                  { 
return parseEdgeGroupsCopy(pattern, (
const GU_Detail *)gdp); }
 
  650                                  { 
return parseBreakpointGroups(pattern, (
const GU_Detail *)gdp); }
 
  655                                 {
return parseBreakpointGroupsCopy(pattern,(
const GU_Detail *)gdp);}
 
  662                                  { 
return parseVertexGroups(pattern, (
const GU_Detail *)gdp); }
 
  667                                  { 
return parseVertexGroupsCopy(pattern, (
const GU_Detail *)gdp); }
 
  669     const GA_Group              *parseAllGroups(
const char *pattern,
 
  670                                     const GroupCreator &creator,
 
  671                                     bool allow_numeric = 
true,
 
  672                                     bool ordered = 
false,
 
  676     const GA_Group              *parseAllGroups(
const char *pattern,
 
  682                                  { 
return parseAllGroups(pattern, 
GroupCreator(gdp, 
false), 
true, 
true); }
 
  684     GA_Group            *parseAllGroupsCopy(
const char *pattern,
 
  685                                     const GroupCreator &creator,
 
  686                                     bool allow_numeric = 
true,
 
  687                                     bool ordered = 
false,
 
  691     GA_Group            *parseAllGroupsCopy(
const char *pattern,
 
  697                                  { 
return parseAllGroupsCopy(pattern, 
GroupCreator(gdp, 
false), 
true, 
true); }
 
  706                          { 
return myGroupParse.destroyAdhocGroup(group); }
 
  708                          { myGroupParse.destroyAdhocGroups(); }
 
  710                          { myGroupParse.destroyAdhocGroups(g); }
 
  717     void updateUserSelectionOnDetail();
 
  730     void clearNodeSelectionSet();
 
  736     void copyCookedSelectionToUserSelection(
OP_Context *context = 
nullptr);
 
  748                                 bool add_to_sel = false);
 
  752                                 bool add_to_sel = false);
 
  755                                 bool add_to_sel = false);
 
  757                                 bool prim_sel = true,
 
  758                                 bool add_to_sel = false);
 
  759     void                 selectPoint(
GA_Offset ptoff, 
bool point_sel = true,
 
  760                                 bool add_to_sel = false);
 
  761     void                 selectFrom(const 
GEO_Primitive &prim, 
bool sel_prim = true,
 
  762                                     bool add_to_sel = false);
 
  763     void                 selectPointsFrom(
GA_Offset ptoff, 
bool point_sel = true,
 
  764                                     bool add_to_sel = false);
 
  766                                 bool add_to_sel = false);
 
  771     void                 selectInputGroup(const 
GA_Group *group,
 
  776     void                 selectInputGroup(const 
GA_Group *group,
 
  781     void                 clearSelection();
 
  796     bool                 destroySelection();
 
  799     bool                 selectionEnabled()
 const 
  801                              return getHighlight();
 
  806                              return myHasCookedSelection;
 
  833     static const 
char *getGroupTypeName(
GA_GroupType gagrouptype, const 
char *guess = "guess");
 
  837     virtual 
void         resetSimulation () {}
 
  839     void                 addInstanceReference(
SOP_Node *node);
 
  840     void                 clearInstanceReference(
SOP_Node *node);
 
  862     virtual void         makePreserveRequest();
 
  867     void                 getNodeSpecificInfoText(
OP_Context &context,
 
  902     fpreal               getW() 
const override;
 
  904     fpreal               getH() 
const override;
 
  918     void                 setUniqueId(
int id) 
override;
 
  919     void                 clearUniqueId() 
override;
 
  928                          { 
return myGroupParse.removeAdhocGroup(group); }
 
  930                          { myGroupParse.removeAdhocGroups(); }
 
  939                                   int &copied_input) 
override;
 
  961                                             int alone = 0) 
override;
 
  963     void                 notifyGroupParmListeners(
 
  964                             int parm_index, 
int group_type_index,
 
  986                             bool alone = 
false, 
bool do_selection = 
true,
 
  988                             int group_type_index = -1,
 
  989                             bool allow_reference = 
true,
 
  990                             bool ordered = 
false,
 
  991                             bool detached = 
true,
 
  992                             int input_index = 0);
 
  995                             bool alone, 
bool do_selection,
 
  997                             int group_type_index,
 
  998                             bool allow_reference,
 
 1000                             const GroupCreator &creator);
 
 1005                             int alone = 0, 
bool do_selection = 
true,
 
 1006                             int input_index = 0, 
int parm_index = 0,
 
 1007                             int group_type_index = -1,
 
 1008                             bool allow_reference = 
true,
 
 1009                             bool fetchgdp = 
true,
 
 1015                             bool alone = 
false, 
bool do_selection = 
true,
 
 1017                             int group_type_index = -1,
 
 1018                             bool allow_reference = 
true,
 
 1019                             bool ordered = 
false,
 
 1020                             bool detached = 
true,
 
 1021                             int input_index = 0);
 
 1024                             bool alone, 
bool do_selection,
 
 1026                             int group_type_index,
 
 1027                             bool allow_reference,
 
 1029                             const GroupCreator &creator);
 
 1034                             int alone = 0, 
bool do_selection = 
true,
 
 1035                             int input_index = 0, 
int parm_index = 0,
 
 1036                             int group_type_index = -1,
 
 1037                             bool allow_reference = 
true,
 
 1038                             bool fetchgdp = 
true,
 
 1044                             bool alone = 
false, 
bool do_selection = 
true,
 
 1046                             int group_type_index = -1,
 
 1047                             bool allow_reference = 
true,
 
 1048                             int input_index = 0);
 
 1051                             bool alone, 
bool do_selection,
 
 1053                             int group_type_index,
 
 1054                             bool allow_reference,
 
 1060                             int alone = 0, 
bool do_selection = 
true,
 
 1061                             int input_index = 0, 
int parm_index = 0,
 
 1062                             int group_type_index = -1,
 
 1067                             bool allow_reference = 
false,
 
 1068                             bool fetchgdp = 
true,
 
 1077                             bool alone = 
false, 
bool do_selection = 
true,
 
 1079                             int group_type_index = -1,
 
 1081                             bool allow_reference = 
true,
 
 1082                             bool is_default_prim = 
true,
 
 1083                             bool ordered = 
false,
 
 1084                             bool detached = 
true,
 
 1085                             int input_index = 0);
 
 1088                             bool alone, 
bool do_selection,
 
 1090                             int group_type_index,
 
 1092                             bool allow_reference,
 
 1093                             bool is_default_prim,
 
 1095                             const GroupCreator &creator);
 
 1100                             int alone = 0, 
bool do_selection = 
true,
 
 1101                             int input_index = 0, 
int parm_index = 0,
 
 1102                             int group_type_index = -1,
 
 1103                             bool allow_reference = 
false,
 
 1104                             bool is_default_prim = 
true,
 
 1105                             bool fetchgdp = 
true,
 
 1115                             bool allow_reference, 
bool is_default_prim,
 
 1116                             bool ordered=
false);
 
 1119                             bool allow_reference, 
bool is_default_prim);
 
 1128                                      bool alone, 
int input_index, 
bool detached,
 
 1129                                      GroupCreator &creator);
 
 1132                                      bool alone, 
int input_index,
 
 1137     void cookInputGroupsEpilogue(
int parm_index, 
int group_type_index,
 
 1139                                  int input_index, 
bool fetchgdp, 
bool alone);
 
 1142     void                 inputConnectChanged(
int which_input) 
override;
 
 1152                          { 
return inputGeo(index); }
 
 1175                          { getLockedErrorManager()->systemError(msg);}
 
 1177                                         const char *msg = 
nullptr)
 
 1178                          { getLockedErrorManager()->commonError(what, msg);}
 
 1180                                         const char *msg = 
nullptr)
 
 1181                          { getLockedErrorManager()->commonWarning(what, msg);}
 
 1270                                         const char *group_type_parm = 
nullptr,
 
 1271                                         int input_index = 0,
 
 1273                                         const char *assoc_groups = 
nullptr,
 
 1274                                         GroupSelectAsOrdered ordered =
 
 1275                                             GroupSelectAsOrdered::AUTO,
 
 1276                                         const char *use_name_attr=
nullptr,
 
 1277                                         const char *select_script=
nullptr);
 
 1281                                         const char *group_type_parm = 
nullptr,
 
 1282                                         int input_index = 0,
 
 1284                                         const char *assoc_groups = 
nullptr,
 
 1285                                         GroupSelectAsOrdered ordered =
 
 1286                                             GroupSelectAsOrdered::AUTO,
 
 1287                                         const char *use_name_attr=
nullptr,
 
 1288                                         const char *select_script=
nullptr);
 
 1297     void        pickPrimitivesUsingPathAttribute(
 
 1300                     const char *stringparm,
 
 1302                     const char *path_attrib=
"path",
 
 1303                     bool use_packed_names=
true);
 
 1306     void        pickPrimitivesUsingPathAttribute(
 
 1307                     const char *stringparm,
 
 1310                     const char *path_attrib=
"path",
 
 1311                     bool use_packed_names=
true);
 
 1315     static GA_Range     getPickedRangeUsingPathAttribute(
 
 1318                             const char *pickedstring,
 
 1319                             const char *path_attrib=
"path",
 
 1320                             bool use_packed_names=
true);
 
 1324     int                          parseGroups(
const char *pattern,
 
 1328                                              bool strict = 
false);
 
 1331     int                          parseGroupsCopy(
const char *pattern,
 
 1337                                              bool strict = 
false,
 
 1355     int                  fillAttribNameMenu(
PRM_Name *menu_entries,
 
 1360                                 void *approve_data = 
nullptr,
 
 1361                                 bool decode_tokens = 
false);
 
 1364     static void          removeMenuDuplicates(
PRM_Name *menu_entries, 
int size);
 
 1369     void                 getVectorAttribs( 
const char * attrib_names,
 
 1373     static void          getVectorAttribs( 
GU_Detail *gdp,
 
 1374                                 const char * attrib_names,
 
 1381                                 const char * attrib_string,
 
 1390                                         const char *l) 
override;
 
 1398     int forEachGroupMatchingMask(
 
 1399         const char *pattern,
 
 1400         GroupOperation operation,
 
 1404         bool maintainorder=
false);
 
 1406     static int invokeForEachGroupMatchingMask(
 
 1408         const char *pattern,
 
 1411         bool maintainorder);
 
 1418     static void invokeForSubdivisionOfPrimitiveGroup(
 
 1422                 int opstep, 
const char *oplabel,
 
 1426     void                        subdividePrimitiveGroup(
 
 1427                                         GroupOperation operation,
 
 1429                                         void *
data, 
int optype, 
 
 1430                                         int opstep, 
const char *oplabel,
 
 1432     void                        subdivideMixPrimitiveGroup(
 
 1433                                         GroupOperation operation,
 
 1435                                         void *
data, 
int optype, 
 
 1436                                         int opstep, 
const char *oplabel,
 
 1438     void                        subdividePointGroup(
 
 1439                                         GroupOperation operation,
 
 1441                                         void *
data, 
int optype, 
 
 1442                                         int opstep, 
const char *oplabel,
 
 1449                                                const char *p=
"adhoc")
 
 1450                          { 
return myGroupParse.createPrimitiveGroup(geo, p); }
 
 1452                                                const char *p=
"adhoc")
 
 1453                          { 
return myGroupParse.createPointGroup(geo, p); }
 
 1455                                                const char *p=
"adhoc")
 
 1456                          { 
return myGroupParse.createEdgeGroup(geo, p); }
 
 1458                                                  const char *p=
"adhoc")
 
 1459                          { 
return myGroupParse.createVertexGroup(geo, p); }
 
 1462         return myGroupParse.appendAdhocGroup(
 
 1479         return myGroupParse.createBreakpointGroup(geo);
 
 1489     void                 clearInstance(
int duplicate = 0);
 
 1491     bool                 hasInstances();
 
 1493     int                  countInstances();
 
 1495     void                 clearAllInstances();
 
 1514         return duplicateSource(index, context, gdp, 
true);
 
 1531                                          bool wattrib = 
true,
 
 1532                                          bool *fully = 
nullptr);
 
 1535                              return duplicatePointSource(index, ctx, gdp, 1,
 
 1542     bool                 copyPointPosFromSource(
 
 1548                                         int *changed = 
nullptr, 
bool force=
false);
 
 1557     void                 resetChangedSourceFlags();
 
 1558     void                 resetChangedSourceFlags(
int which_input);
 
 1578                              return myInputChangeHelper.useInput(
 
 1579                                                 *
this, idx, changed, force);
 
 1582     void                 deleteCookedData() 
override;
 
 1583     int                  deleteNodeData(
void *) 
override;
 
 1586     void                 convertPivotAboutGroupCentroid(
 
 1590     void                 convertPivotAboutGroupCentroid(
 
 1592                                     const char *pivot_parm_name,
 
 1607                               const char *path_prefix,
 
 1612                               const char *
path=
nullptr) 
override;
 
 1639     OP_ERROR             saveIntrinsic(std::ostream &os, 
 
 1643                                     short class_id, 
short sig,
 
 1644                                     const char *
path=
nullptr) 
override;
 
 1645     bool                 loadPacket(
UT_IStream &is, 
const char *token,
 
 1646                                     const char *
path=
nullptr) 
override;
 
 1648     void                 clearAndDestroy() 
override;
 
 1650     int                  saveCookedData(
const char *, 
 
 1652     int                  saveCookedData(std::ostream &os, 
 
 1654                                         int binary = 0) 
override;
 
 1656                                         const char *
path=
nullptr) 
override;
 
 1661             bool         loadHardCookedData(
UT_IStream &is, 
const char *
path=
nullptr);
 
 1663     const char          *getFileExtension(
int binary) 
const override;
 
 1665     bool                 softLockable(
const GU_Detail &unmodelled_gdp,
 
 1672                                            SOP_SoftLockData *old_slockdata=
nullptr);
 
 1675     void                 *myVisualizeCallbackData;
 
 1684     virtual void         unloadDataHack();
 
 1689     bool                 unloadData() 
override;
 
 1692     void                 clearVerbCache();
 
 1696     int64                getMemoryUsage(
bool inclusive) 
const override;
 
 1701     virtual int64        getLoadedMemoryUsage() 
const;
 
 1704     bool                 isLoaded() 
const override;
 
 1707     bool                 shouldUnload() 
const;
 
 1723     static void         markDetailDirty(
GU_Detail *dirtygdp,
 
 1724                                         bool bumpalldataid);
 
 1746     friend class         SOP_CacheData; 
 
 1747     friend class         sop_AttributeEvaluator; 
 
 1752     SOP_SoftLockData    *mySoftLockData;
 
 1754     bool                 myHasCookedSelection;
 
 1760     static  bool         theGlobalCaptOverride;
 
 1772                                  { myUsesSOPLocalVar = 
true; }
 
 1775                                     const char *
name) 
override;
 
 1776     void                     getAttributeEvaluatorNames(
 
 1780     bool hasTransformTracks() 
const override;
 
 1781     bool evaluateTransformTracks( 
OP_Context &context,
 
 1783     bool evaluateTransformTracksTargets( 
OP_Context &context,
 
 1817     int                          myCurBuiltPtBox[2];
 
 1819     int                          myCurBuiltPrimBox[2];
 
 1832     int                          myAttribCacheOffsetGdpId[2];
 
 1833     int                          myAttribCacheOffsetMetaCacheCount[2];
 
 1834     unsigned int                 myAttribCacheTotalDictSize[2];
 
 1844     friend class sop_NodeInputs;
 
static PRM_ChoiceList primGroupMenu
 
GA_VertexGroup * parseVertexGroupsCopy(const char *pattern)
 
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
 
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)
 
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
 
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