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