32         myDisableSelfAttr = 
"disableself"_UTsh;
 
   33         myDisableExternalAttr = 
"disableexternal"_UTsh;
 
   34         myWeldAttr = 
"weld"_UTsh;
 
   38         myRequirePairwiseAutoDisable = 
true;
 
   39         myUpdateDisable = 
false;
 
   40         myResetDetangledPoints = 
true;
 
   42         myMarkAttr = 
"changed"_UTsh;
 
   45         myCapDisplace = 
false;
 
   49         myResolveFreeEdges = 
false;
 
   50         myLayerAttr = 
"layer"_UTsh;
 
   52         myExternalFriction = 1.0;
 
   54         myStaticThreshold = 0.5;
 
   56         myConstantCollisionTopology = 
true;
 
   57         mySharedCache = 
""_UTsh;
 
   59         myUpdateOverlap = 
false;
 
   72         if (myPrevpos != src.myPrevpos) 
return false;
 
   73         if (myDisableSelfAttr != src.myDisableSelfAttr) 
return false;
 
   74         if (myDisableExternalAttr != src.myDisableExternalAttr) 
return false;
 
   75         if (myWeldAttr != src.myWeldAttr) 
return false;
 
   76         if (myThickness != src.myThickness) 
return false;
 
   77         if (myDoSelf != src.myDoSelf) 
return false;
 
   78         if (myDoTet != src.myDoTet) 
return false;
 
   79         if (myRequirePairwiseAutoDisable != src.myRequirePairwiseAutoDisable) 
return false;
 
   80         if (myUpdateDisable != src.myUpdateDisable) 
return false;
 
   81         if (myResetDetangledPoints != src.myResetDetangledPoints) 
return false;
 
   82         if (myDoMark != src.myDoMark) 
return false;
 
   83         if (myMarkAttr != src.myMarkAttr) 
return false;
 
   84         if (myDoResolve != src.myDoResolve) 
return false;
 
   85         if (myMaxWeight != src.myMaxWeight) 
return false;
 
   86         if (myCapDisplace != src.myCapDisplace) 
return false;
 
   87         if (myMaxDisplace != src.myMaxDisplace) 
return false;
 
   88         if (myResolveAll != src.myResolveAll) 
return false;
 
   89         if (myResolveAllMax != src.myResolveAllMax) 
return false;
 
   90         if (myResolveFreeEdges != src.myResolveFreeEdges) 
return false;
 
   91         if (myLayerAttr != src.myLayerAttr) 
return false;
 
   92         if (myLayerShock != src.myLayerShock) 
return false;
 
   93         if (myExternalFriction != src.myExternalFriction) 
return false;
 
   94         if (mySelfFriction != src.mySelfFriction) 
return false;
 
   95         if (myStaticThreshold != src.myStaticThreshold) 
return false;
 
   96         if (myKineticScale != src.myKineticScale) 
return false;
 
   97         if (myConstantCollisionTopology != src.myConstantCollisionTopology) 
return false;
 
   98         if (mySharedCache != src.mySharedCache) 
return false;
 
   99         if (myResetKey != src.myResetKey) 
return false;
 
  100         if (myUpdateOverlap != src.myUpdateOverlap) 
return false;
 
  118             graph->
evalOpParm(myPrevpos, nodeidx, 
"prevpos", time, graph->
isDirect()?
nullptr:depnode);
 
  119         myDisableSelfAttr = 
"disableself"_UTsh;
 
  121             graph->
evalOpParm(myDisableSelfAttr, nodeidx, 
"disableselfattr", time, graph->
isDirect()?
nullptr:depnode);
 
  122         myDisableExternalAttr = 
"disableexternal"_UTsh;
 
  124             graph->
evalOpParm(myDisableExternalAttr, nodeidx, 
"disableexternalattr", time, graph->
isDirect()?
nullptr:depnode);
 
  125         myWeldAttr = 
"weld"_UTsh;
 
  127             graph->
evalOpParm(myWeldAttr, nodeidx, 
"weldattr", time, graph->
isDirect()?
nullptr:depnode);
 
  130             graph->
evalOpParm(myThickness, nodeidx, 
"thickness", time, graph->
isDirect()?
nullptr:depnode);
 
  133             graph->
evalOpParm(myDoSelf, nodeidx, 
"doself", time, graph->
isDirect()?
nullptr:depnode);
 
  136             graph->
evalOpParm(myDoTet, nodeidx, 
"dotet", time, graph->
isDirect()?
nullptr:depnode);
 
  137         myRequirePairwiseAutoDisable = 
true;
 
  139             graph->
evalOpParm(myRequirePairwiseAutoDisable, nodeidx, 
"pairedautodisable", time, graph->
isDirect()?
nullptr:depnode);
 
  140         myUpdateDisable = 
false;
 
  142             graph->
evalOpParm(myUpdateDisable, nodeidx, 
"updatedisable", time, graph->
isDirect()?
nullptr:depnode);
 
  143         myResetDetangledPoints = 
true;
 
  144         if (
true && ( (
true&&!(((getUpdateDisable()==0)))) ) )
 
  145             graph->
evalOpParm(myResetDetangledPoints, nodeidx, 
"resetdetangled", time, graph->
isDirect()?
nullptr:depnode);
 
  148             graph->
evalOpParm(myDoMark, nodeidx, 
"domark", time, graph->
isDirect()?
nullptr:depnode);
 
  149         myMarkAttr = 
"changed"_UTsh;
 
  150         if (
true && ( (
true&&!(((getDoMark()==0)))) ) )
 
  151             graph->
evalOpParm(myMarkAttr, nodeidx, 
"markattr", time, graph->
isDirect()?
nullptr:depnode);
 
  153         if (
true && ( (
true&&!(((getUpdateDisable()==1)))) ) )
 
  154             graph->
evalOpParm(myDoResolve, nodeidx, 
"doresolve", time, graph->
isDirect()?
nullptr:depnode);
 
  157             graph->
evalOpParm(myMaxWeight, nodeidx, 
"maxweight", time, graph->
isDirect()?
nullptr:depnode);
 
  158         myCapDisplace = 
false;
 
  160             graph->
evalOpParm(myCapDisplace, nodeidx, 
"capdisplace", time, graph->
isDirect()?
nullptr:depnode);
 
  162         if (
true && ( (
true&&!(((getCapDisplace()==0)))) ) )
 
  163             graph->
evalOpParm(myMaxDisplace, nodeidx, 
"maxdisplace", time, graph->
isDirect()?
nullptr:depnode);
 
  164         myResolveAll = 
false;
 
  165         if (
true && ( (
true&&!(((getUpdateDisable()==1))||((getDoResolve()==0)))) ) )
 
  166             graph->
evalOpParm(myResolveAll, nodeidx, 
"resolveall", time, graph->
isDirect()?
nullptr:depnode);
 
  167         myResolveAllMax = 10;
 
  168         if (
true && ( (
true&&!(((getUpdateDisable()==1))||((getDoResolve()==0))||((getResolveAll()==0)))) ) )
 
  169             graph->
evalOpParm(myResolveAllMax, nodeidx, 
"resolveallmax", time, graph->
isDirect()?
nullptr:depnode);
 
  170         myResolveFreeEdges = 
false;
 
  171         if (
true && ( (
true&&!(((getUpdateDisable()==1))||((getDoResolve()==0))||((getResolveAll()==0)))) ) )
 
  172             graph->
evalOpParm(myResolveFreeEdges, nodeidx, 
"resolvealledges", time, graph->
isDirect()?
nullptr:depnode);
 
  173         myLayerAttr = 
"layer"_UTsh;
 
  174         if (
true && ( (
true&&!(((getUpdateDisable()==1))||((getDoResolve()==0)))) ) )
 
  175             graph->
evalOpParm(myLayerAttr, nodeidx, 
"layerattr", time, graph->
isDirect()?
nullptr:depnode);
 
  177         if (
true && ( (
true&&!(((getUpdateDisable()==1))||((getDoResolve()==0)))) ) )
 
  178             graph->
evalOpParm(myLayerShock, nodeidx, 
"layershock", time, graph->
isDirect()?
nullptr:depnode);
 
  179         myExternalFriction = 1.0;
 
  180         if (
true && ( (
true&&!(((getDoResolve()==0)))) ) )
 
  181             graph->
evalOpParm(myExternalFriction, nodeidx, 
"externalfriction", time, graph->
isDirect()?
nullptr:depnode);
 
  182         mySelfFriction = 1.0;
 
  183         if (
true && ( (
true&&!(((getDoResolve()==0)))) ) )
 
  184             graph->
evalOpParm(mySelfFriction, nodeidx, 
"selffriction", time, graph->
isDirect()?
nullptr:depnode);
 
  185         myStaticThreshold = 0.5;
 
  186         if (
true && ( (
true&&!(((getDoResolve()==0)))) ) )
 
  187             graph->
evalOpParm(myStaticThreshold, nodeidx, 
"static_threshold", time, graph->
isDirect()?
nullptr:depnode);
 
  188         myKineticScale = 0.1;
 
  189         if (
true && ( (
true&&!(((getDoResolve()==0)))) ) )
 
  190             graph->
evalOpParm(myKineticScale, nodeidx, 
"kinetic_scale", time, graph->
isDirect()?
nullptr:depnode);
 
  191         myConstantCollisionTopology = 
true;
 
  193             graph->
evalOpParm(myConstantCollisionTopology, nodeidx, 
"constantcollisiontopology", time, graph->
isDirect()?
nullptr:depnode);
 
  194         mySharedCache = 
""_UTsh;
 
  196             graph->
evalOpParm(mySharedCache, nodeidx, 
"sharedcache", time, graph->
isDirect()?
nullptr:depnode);
 
  199             graph->
evalOpParm(myResetKey, nodeidx, 
"resetkey", time, graph->
isDirect()?
nullptr:depnode);
 
  200         myUpdateOverlap = 
false;
 
  201         if (
true && ( (
true&&!(((getUpdateDisable()==0)&&(getDoResolve()==1)))) ) )
 
  202             graph->
evalOpParm(myUpdateOverlap, nodeidx, 
"updateoverlap", time, graph->
isDirect()?
nullptr:depnode);
 
  218     template <
typename T>
 
  225         if (idx.
size() != instance.
size()+1)
 
  330     { doGetParmValue(idx, instance, value); }
 
  332     { doGetParmValue(idx, instance, value); }
 
  334     { doGetParmValue(idx, instance, value); }
 
  336     { doGetParmValue(idx, instance, value); }
 
  338     { doGetParmValue(idx, instance, value); }
 
  340     { doGetParmValue(idx, instance, value); }
 
  342     { doGetParmValue(idx, instance, value); }
 
  344     { doGetParmValue(idx, instance, value); }
 
  346     { doGetParmValue(idx, instance, value); }
 
  348     { doGetParmValue(idx, instance, value); }
 
  350     { doGetParmValue(idx, instance, value); }
 
  352     template <
typename T>
 
  359         if (idx.
size() != instance.
size()+1)
 
  385                 coerceValue(myRequirePairwiseAutoDisable, ( ( value ) ));
 
  391                 coerceValue(myResetDetangledPoints, ( ( value ) ));
 
  439                 coerceValue(myConstantCollisionTopology, ( ( value ) ));
 
  455     { doSetParmValue(idx, instance, value); }
 
  457     { doSetParmValue(idx, instance, value); }
 
  459     { doSetParmValue(idx, instance, value); }
 
  461     { doSetParmValue(idx, instance, value); }
 
  463     { doSetParmValue(idx, instance, value); }
 
  465     { doSetParmValue(idx, instance, value); }
 
  467     { doSetParmValue(idx, instance, value); }
 
  469     { doSetParmValue(idx, instance, value); }
 
  471     { doSetParmValue(idx, instance, value); }
 
  473     { doSetParmValue(idx, instance, value); }
 
  475     { doSetParmValue(idx, instance, value); }
 
  491         if (fieldnum.
size() < 1)
 
  498                 return "disableselfattr";
 
  500                 return "disableexternalattr";
 
  510                 return "pairedautodisable";
 
  512                 return "updatedisable";
 
  514                 return "resetdetangled";
 
  524                 return "capdisplace";
 
  526                 return "maxdisplace";
 
  530                 return "resolveallmax";
 
  532                 return "resolvealledges";
 
  538                 return "externalfriction";
 
  540                 return "selffriction";
 
  542                 return "static_threshold";
 
  544                 return "kinetic_scale";
 
  546                 return "constantcollisiontopology";
 
  548                 return "sharedcache";
 
  552                 return "updateoverlap";
 
  560         if (fieldnum.
size() < 1)
 
  561             return PARM_UNSUPPORTED;
 
  660         loadData(is, rampdata);
 
  678                 int             typelen = colon - data.
buffer();
 
  692     { 
int64 iv = 
v; UTwrite(os, &iv); }
 
  694     { UTwrite<fpreal64>(os, &
v); }
 
  696     { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y()); }
 
  698     { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
 
  699       UTwrite<fpreal64>(os, &v.
z()); }
 
  701     { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
 
  702       UTwrite<fpreal64>(os, &v.
z()); UTwrite<fpreal64>(os, &v.
w()); }
 
  714         if (s) s->save(ostr);
 
  716         saveData(os, result);
 
  723             ostr << s->getDataTypeToken();
 
  728         saveData(os, result);
 
  732     void         save(std::ostream &os)
 const 
  736         saveData(os, myPrevpos);
 
  737         saveData(os, myDisableSelfAttr);
 
  738         saveData(os, myDisableExternalAttr);
 
  739         saveData(os, myWeldAttr);
 
  740         saveData(os, myThickness);
 
  741         saveData(os, myDoSelf);
 
  742         saveData(os, myDoTet);
 
  743         saveData(os, myRequirePairwiseAutoDisable);
 
  744         saveData(os, myUpdateDisable);
 
  745         saveData(os, myResetDetangledPoints);
 
  746         saveData(os, myDoMark);
 
  747         saveData(os, myMarkAttr);
 
  748         saveData(os, myDoResolve);
 
  749         saveData(os, myMaxWeight);
 
  750         saveData(os, myCapDisplace);
 
  751         saveData(os, myMaxDisplace);
 
  752         saveData(os, myResolveAll);
 
  753         saveData(os, myResolveAllMax);
 
  754         saveData(os, myResolveFreeEdges);
 
  755         saveData(os, myLayerAttr);
 
  756         saveData(os, myLayerShock);
 
  757         saveData(os, myExternalFriction);
 
  758         saveData(os, mySelfFriction);
 
  759         saveData(os, myStaticThreshold);
 
  760         saveData(os, myKineticScale);
 
  761         saveData(os, myConstantCollisionTopology);
 
  762         saveData(os, mySharedCache);
 
  763         saveData(os, myResetKey);
 
  764         saveData(os, myUpdateOverlap);
 
  777         loadData(is, myPrevpos);
 
  778         loadData(is, myDisableSelfAttr);
 
  779         loadData(is, myDisableExternalAttr);
 
  780         loadData(is, myWeldAttr);
 
  781         loadData(is, myThickness);
 
  782         loadData(is, myDoSelf);
 
  783         loadData(is, myDoTet);
 
  784         loadData(is, myRequirePairwiseAutoDisable);
 
  785         loadData(is, myUpdateDisable);
 
  786         loadData(is, myResetDetangledPoints);
 
  787         loadData(is, myDoMark);
 
  788         loadData(is, myMarkAttr);
 
  789         loadData(is, myDoResolve);
 
  790         loadData(is, myMaxWeight);
 
  791         loadData(is, myCapDisplace);
 
  792         loadData(is, myMaxDisplace);
 
  793         loadData(is, myResolveAll);
 
  794         loadData(is, myResolveAllMax);
 
  795         loadData(is, myResolveFreeEdges);
 
  796         loadData(is, myLayerAttr);
 
  797         loadData(is, myLayerShock);
 
  798         loadData(is, myExternalFriction);
 
  799         loadData(is, mySelfFriction);
 
  800         loadData(is, myStaticThreshold);
 
  801         loadData(is, myKineticScale);
 
  802         loadData(is, myConstantCollisionTopology);
 
  803         loadData(is, mySharedCache);
 
  804         loadData(is, myResetKey);
 
  805         loadData(is, myUpdateOverlap);
 
  815         if (!thissop) 
return getPrevpos();
 
  817         OP_Utils::evalOpParm(result, thissop, 
"prevpos", cookparms.
getCookTime(), 0);
 
  825         if (!thissop) 
return getDisableSelfAttr();
 
  827         OP_Utils::evalOpParm(result, thissop, 
"disableselfattr", cookparms.
getCookTime(), 0);
 
  835         if (!thissop) 
return getDisableExternalAttr();
 
  837         OP_Utils::evalOpParm(result, thissop, 
"disableexternalattr", cookparms.
getCookTime(), 0);
 
  845         if (!thissop) 
return getWeldAttr();
 
  847         OP_Utils::evalOpParm(result, thissop, 
"weldattr", cookparms.
getCookTime(), 0);
 
  855         if (!thissop) 
return getThickness();
 
  857         OP_Utils::evalOpParm(result, thissop, 
"thickness", cookparms.
getCookTime(), 0);
 
  865         if (!thissop) 
return getDoSelf();
 
  867         OP_Utils::evalOpParm(result, thissop, 
"doself", cookparms.
getCookTime(), 0);
 
  875         if (!thissop) 
return getDoTet();
 
  877         OP_Utils::evalOpParm(result, thissop, 
"dotet", cookparms.
getCookTime(), 0);
 
  885         if (!thissop) 
return getRequirePairwiseAutoDisable();
 
  887         OP_Utils::evalOpParm(result, thissop, 
"pairedautodisable", cookparms.
getCookTime(), 0);
 
  895         if (!thissop) 
return getUpdateDisable();
 
  897         OP_Utils::evalOpParm(result, thissop, 
"updatedisable", cookparms.
getCookTime(), 0);
 
  905         if (!thissop) 
return getResetDetangledPoints();
 
  907         OP_Utils::evalOpParm(result, thissop, 
"resetdetangled", cookparms.
getCookTime(), 0);
 
  915         if (!thissop) 
return getDoMark();
 
  917         OP_Utils::evalOpParm(result, thissop, 
"domark", cookparms.
getCookTime(), 0);
 
  925         if (!thissop) 
return getMarkAttr();
 
  927         OP_Utils::evalOpParm(result, thissop, 
"markattr", cookparms.
getCookTime(), 0);
 
  935         if (!thissop) 
return getDoResolve();
 
  937         OP_Utils::evalOpParm(result, thissop, 
"doresolve", cookparms.
getCookTime(), 0);
 
  945         if (!thissop) 
return getMaxWeight();
 
  947         OP_Utils::evalOpParm(result, thissop, 
"maxweight", cookparms.
getCookTime(), 0);
 
  955         if (!thissop) 
return getCapDisplace();
 
  957         OP_Utils::evalOpParm(result, thissop, 
"capdisplace", cookparms.
getCookTime(), 0);
 
  965         if (!thissop) 
return getMaxDisplace();
 
  967         OP_Utils::evalOpParm(result, thissop, 
"maxdisplace", cookparms.
getCookTime(), 0);
 
  975         if (!thissop) 
return getResolveAll();
 
  977         OP_Utils::evalOpParm(result, thissop, 
"resolveall", cookparms.
getCookTime(), 0);
 
  985         if (!thissop) 
return getResolveAllMax();
 
  987         OP_Utils::evalOpParm(result, thissop, 
"resolveallmax", cookparms.
getCookTime(), 0);
 
  995         if (!thissop) 
return getResolveFreeEdges();
 
  997         OP_Utils::evalOpParm(result, thissop, 
"resolvealledges", cookparms.
getCookTime(), 0);
 
 1005         if (!thissop) 
return getLayerAttr();
 
 1007         OP_Utils::evalOpParm(result, thissop, 
"layerattr", cookparms.
getCookTime(), 0);
 
 1015         if (!thissop) 
return getLayerShock();
 
 1017         OP_Utils::evalOpParm(result, thissop, 
"layershock", cookparms.
getCookTime(), 0);
 
 1025         if (!thissop) 
return getExternalFriction();
 
 1027         OP_Utils::evalOpParm(result, thissop, 
"externalfriction", cookparms.
getCookTime(), 0);
 
 1035         if (!thissop) 
return getSelfFriction();
 
 1037         OP_Utils::evalOpParm(result, thissop, 
"selffriction", cookparms.
getCookTime(), 0);
 
 1045         if (!thissop) 
return getStaticThreshold();
 
 1047         OP_Utils::evalOpParm(result, thissop, 
"static_threshold", cookparms.
getCookTime(), 0);
 
 1055         if (!thissop) 
return getKineticScale();
 
 1057         OP_Utils::evalOpParm(result, thissop, 
"kinetic_scale", cookparms.
getCookTime(), 0);
 
 1065         if (!thissop) 
return getConstantCollisionTopology();
 
 1067         OP_Utils::evalOpParm(result, thissop, 
"constantcollisiontopology", cookparms.
getCookTime(), 0);
 
 1075         if (!thissop) 
return getSharedCache();
 
 1077         OP_Utils::evalOpParm(result, thissop, 
"sharedcache", cookparms.
getCookTime(), 0);
 
 1085         if (!thissop) 
return getResetKey();
 
 1087         OP_Utils::evalOpParm(result, thissop, 
"resetkey", cookparms.
getCookTime(), 0);
 
 1095         if (!thissop) 
return getUpdateOverlap();
 
 1097         OP_Utils::evalOpParm(result, thissop, 
"updateoverlap", cookparms.
getCookTime(), 0);
 
 1109     bool myRequirePairwiseAutoDisable;
 
 1110     bool myUpdateDisable;
 
 1111     bool myResetDetangledPoints;
 
 1119     int64 myResolveAllMax;
 
 1120     bool myResolveFreeEdges;
 
 1127     bool myConstantCollisionTopology;
 
 1130     bool myUpdateOverlap;
 
bool operator!=(const SOP_DetangleParms &src) const 
 
static void saveData(std::ostream &os, PRM_DataItemHandle s)
 
static void loadData(UT_IStream &is, UT_Vector3D &v)
 
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
 
fpreal64 getResetKey() const 
 
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
 
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
 
static void saveData(std::ostream &os, int64 v)
 
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
 
SOP_Node * getNode() const 
 
UT_StringHolder opWeldAttr(const SOP_NodeVerb::CookParms &cookparms) const 
 
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
 
void setSelfFriction(fpreal64 val)
 
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
 
bool operator==(const SOP_DetangleParms &src) const 
 
T clampMaxValue(fpreal maxvalue, const T &src) const 
 
static void saveData(std::ostream &os, fpreal64 v)
 
fpreal64 getMaxDisplace() const 
 
void setMarkAttr(const UT_StringHolder &val)
 
exint bread(int32 *buffer, exint asize=1)
 
GT_API const UT_StringHolder time
 
constexpr SYS_FORCE_INLINE T & y() noexcept
 
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
 
void setThickness(fpreal64 val)
 
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
 
void setKineticScale(fpreal64 val)
 
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
 
bool getResolveFreeEdges() const 
 
GLsizei const GLfloat * value
 
void setResolveFreeEdges(bool val)
 
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
 
fpreal64 getSelfFriction() const 
 
static void saveData(std::ostream &os, UT_StringHolder s)
 
const OP_Context & context() const 
 
fpreal64 getExternalFriction() const 
 
constexpr SYS_FORCE_INLINE T & z() noexcept
 
SYS_FORCE_INLINE const char * buffer() const 
 
const UT_StringHolder & getPrevpos() const 
 
An output stream object that owns its own string buffer storage. 
 
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
 
void setLayerAttr(const UT_StringHolder &val)
 
fpreal64 opStaticThreshold(const SOP_NodeVerb::CookParms &cookparms) const 
 
bool getConstantCollisionTopology() const 
 
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
 
void setMaxWeight(fpreal64 val)
 
void setSharedCache(const UT_StringHolder &val)
 
void setExternalFriction(fpreal64 val)
 
static void saveData(std::ostream &os, bool v)
 
UT_StringHolder opDisableSelfAttr(const SOP_NodeVerb::CookParms &cookparms) const 
 
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
 
**But if you need a result
 
void setMaxDisplace(fpreal64 val)
 
T clampMinValue(fpreal minvalue, const T &src) const 
 
fpreal64 getKineticScale() const 
 
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
 
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer. 
 
const UT_StringHolder & getDisableSelfAttr() const 
 
static void loadData(UT_IStream &is, UT_Vector3I &v)
 
void setWeldAttr(const UT_StringHolder &val)
 
constexpr SYS_FORCE_INLINE T & x() noexcept
 
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
 
void setDisableSelfAttr(const UT_StringHolder &val)
 
const UT_StringHolder & getMarkAttr() const 
 
bool getResolveAll() const 
 
void setRequirePairwiseAutoDisable(bool val)
 
bool getUpdateOverlap() const 
 
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
 
constexpr SYS_FORCE_INLINE T & x() noexcept
 
bool opCapDisplace(const SOP_NodeVerb::CookParms &cookparms) const 
 
fpreal64 opExternalFriction(const SOP_NodeVerb::CookParms &cookparms) const 
 
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
 
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
 
int64 opResolveAllMax(const SOP_NodeVerb::CookParms &cookparms) const 
 
bool opDoMark(const SOP_NodeVerb::CookParms &cookparms) const 
 
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
 
static void saveData(std::ostream &os, UT_Vector4D v)
 
UT_StringHolder opSharedCache(const SOP_NodeVerb::CookParms &cookparms) const 
 
bool opResolveAll(const SOP_NodeVerb::CookParms &cookparms) const 
 
ParmType getNestParmType(TempIndex fieldnum) const override
 
static void loadData(UT_IStream &is, UT_Matrix2D &v)
 
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
 
void setResetKey(fpreal64 val)
 
const UT_StringHolder & getWeldAttr() const 
 
fpreal64 getLayerShock() const 
 
SYS_FORCE_INLINE const char * buffer() const 
 
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr. 
 
void setUpdateDisable(bool val)
 
constexpr SYS_FORCE_INLINE T & z() noexcept
 
void setResetDetangledPoints(bool val)
 
static void loadData(UT_IStream &is, int64 &v)
 
void setPrevpos(const UT_StringHolder &val)
 
fpreal64 getStaticThreshold() const 
 
const OP_GraphProxy * graph() const 
 
fpreal64 opKineticScale(const SOP_NodeVerb::CookParms &cookparms) const 
 
exint getNestNumParms(TempIndex idx) const override
 
const char * getNestParmName(TempIndex fieldnum) const override
 
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
 
const UT_StringHolder & getLayerAttr() const 
 
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const 
 
static void saveData(std::ostream &os, UT_Matrix2D v)
 
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
 
fpreal64 opThickness(const SOP_NodeVerb::CookParms &cookparms) const 
 
static void saveData(std::ostream &os, UT_Matrix3D v)
 
void copyFrom(const OP_NodeParms *src) override
 
bool getResetDetangledPoints() const 
 
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
 
bool opDoResolve(const SOP_NodeVerb::CookParms &cookparms) const 
 
static void loadData(UT_IStream &is, UT_Vector2D &v)
 
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
 
int64 getResolveAllMax() const 
 
fpreal64 opMaxDisplace(const SOP_NodeVerb::CookParms &cookparms) const 
 
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
 
fpreal64 getThickness() const 
 
void setUpdateOverlap(bool val)
 
void loadFromOpSubclass(const LoadParms &loadparms) override
 
void saveBinary(std::ostream &os) const 
Save string to binary stream. 
 
UT_StringHolder opPrevpos(const SOP_NodeVerb::CookParms &cookparms) const 
 
GT_API const UT_StringHolder version
 
fpreal64 opLayerShock(const SOP_NodeVerb::CookParms &cookparms) const 
 
bool getCapDisplace() const 
 
static void loadData(UT_IStream &is, UT_Vector2I &v)
 
void save(std::ostream &os) const 
 
bool getRequirePairwiseAutoDisable() const 
 
static void loadData(UT_IStream &is, UT_Vector4D &v)
 
fpreal64 opMaxWeight(const SOP_NodeVerb::CookParms &cookparms) const 
 
void coerceValue(T &result, const S &src) const 
 
fpreal64 opSelfFriction(const SOP_NodeVerb::CookParms &cookparms) const 
 
bool isParmColorRamp(exint idx) const override
 
static void saveData(std::ostream &os, UT_Matrix4D v)
 
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
 
void setCapDisplace(bool val)
 
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
 
void setResolveAllMax(int64 val)
 
DEP_MicroNode * depnode() const 
 
static void loadData(UT_IStream &is, fpreal64 &v)
 
static void loadData(UT_IStream &is, UT_Matrix4D &v)
 
Utility class for containing a color ramp. 
 
static void saveData(std::ostream &os, UT_Vector3D v)
 
constexpr SYS_FORCE_INLINE T & w() noexcept
 
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
 
virtual UT_StringHolder baseGetSignature() const 
 
const UT_StringHolder & getDisableExternalAttr() const 
 
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
 
UT_StringHolder opDisableExternalAttr(const SOP_NodeVerb::CookParms &cookparms) const 
 
void setDoResolve(bool val)
 
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
 
bool opUpdateDisable(const SOP_NodeVerb::CookParms &cookparms) const 
 
static void saveData(std::ostream &os, UT_Vector2D v)
 
fpreal getCookTime() const 
 
bool opConstantCollisionTopology(const SOP_NodeVerb::CookParms &cookparms) const 
 
bool opDoSelf(const SOP_NodeVerb::CookParms &cookparms) const 
 
void setStaticThreshold(fpreal64 val)
 
bool opDoTet(const SOP_NodeVerb::CookParms &cookparms) const 
 
const char * findChar(int c) const 
 
bool getDoResolve() const 
 
static void loadData(UT_IStream &is, UT_Matrix3D &v)
 
bool opResetDetangledPoints(const SOP_NodeVerb::CookParms &cookparms) const 
 
static void loadData(UT_IStream &is, bool &v)
 
static void loadData(UT_IStream &is, UT_StringHolder &v)
 
bool opResolveFreeEdges(const SOP_NodeVerb::CookParms &cookparms) const 
 
UT_StringHolder opMarkAttr(const SOP_NodeVerb::CookParms &cookparms) const 
 
constexpr SYS_FORCE_INLINE T & y() noexcept
 
bool load(UT_IStream &is)
 
void setConstantCollisionTopology(bool val)
 
bool opRequirePairwiseAutoDisable(const SOP_NodeVerb::CookParms &cookparms) const 
 
fpreal64 opResetKey(const SOP_NodeVerb::CookParms &cookparms) const 
 
virtual bool isDirect() const =0
Direct proxies mirror actual nodes: 
 
static void loadData(UT_IStream &is, UT_Vector4I &v)
 
bool getUpdateDisable() const 
 
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
 
constexpr SYS_FORCE_INLINE T & y() noexcept
 
SYS_FORCE_INLINE bool isstring() const 
 
const UT_StringHolder & getSharedCache() const 
 
bool opUpdateOverlap(const SOP_NodeVerb::CookParms &cookparms) const 
 
void setDisableExternalAttr(const UT_StringHolder &val)
 
OP_NodeParms & operator=(const OP_NodeParms &)=default
 
void setResolveAll(bool val)
 
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
 
UT_StringHolder opLayerAttr(const SOP_NodeVerb::CookParms &cookparms) const 
 
void setLayerShock(fpreal64 val)
 
fpreal64 getMaxWeight() const 
 
constexpr SYS_FORCE_INLINE T & x() noexcept