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;
115 graph->
evalOpParm(myPrevpos, nodeidx,
"prevpos", time, 0);
116 myDisableSelfAttr =
"disableself"_UTsh;
118 graph->
evalOpParm(myDisableSelfAttr, nodeidx,
"disableselfattr", time, 0);
119 myDisableExternalAttr =
"disableexternal"_UTsh;
121 graph->
evalOpParm(myDisableExternalAttr, nodeidx,
"disableexternalattr", time, 0);
122 myWeldAttr =
"weld"_UTsh;
124 graph->
evalOpParm(myWeldAttr, nodeidx,
"weldattr", time, 0);
127 graph->
evalOpParm(myThickness, nodeidx,
"thickness", time, 0);
130 graph->
evalOpParm(myDoSelf, nodeidx,
"doself", time, 0);
133 graph->
evalOpParm(myDoTet, nodeidx,
"dotet", time, 0);
134 myRequirePairwiseAutoDisable =
true;
136 graph->
evalOpParm(myRequirePairwiseAutoDisable, nodeidx,
"pairedautodisable", time, 0);
137 myUpdateDisable =
false;
139 graph->
evalOpParm(myUpdateDisable, nodeidx,
"updatedisable", time, 0);
140 myResetDetangledPoints =
true;
141 if (
true && ( (
true&&!(((getUpdateDisable()==0)))) ) )
142 graph->
evalOpParm(myResetDetangledPoints, nodeidx,
"resetdetangled", time, 0);
145 graph->
evalOpParm(myDoMark, nodeidx,
"domark", time, 0);
146 myMarkAttr =
"changed"_UTsh;
147 if (
true && ( (
true&&!(((getDoMark()==0)))) ) )
148 graph->
evalOpParm(myMarkAttr, nodeidx,
"markattr", time, 0);
150 if (
true && ( (
true&&!(((getUpdateDisable()==1)))) ) )
151 graph->
evalOpParm(myDoResolve, nodeidx,
"doresolve", time, 0);
154 graph->
evalOpParm(myMaxWeight, nodeidx,
"maxweight", time, 0);
155 myCapDisplace =
false;
157 graph->
evalOpParm(myCapDisplace, nodeidx,
"capdisplace", time, 0);
159 if (
true && ( (
true&&!(((getCapDisplace()==0)))) ) )
160 graph->
evalOpParm(myMaxDisplace, nodeidx,
"maxdisplace", time, 0);
161 myResolveAll =
false;
162 if (
true && ( (
true&&!(((getUpdateDisable()==1))||((getDoResolve()==0)))) ) )
163 graph->
evalOpParm(myResolveAll, nodeidx,
"resolveall", time, 0);
164 myResolveAllMax = 10;
165 if (
true && ( (
true&&!(((getUpdateDisable()==1))||((getDoResolve()==0))||((getResolveAll()==0)))) ) )
166 graph->
evalOpParm(myResolveAllMax, nodeidx,
"resolveallmax", time, 0);
167 myResolveFreeEdges =
false;
168 if (
true && ( (
true&&!(((getUpdateDisable()==1))||((getDoResolve()==0))||((getResolveAll()==0)))) ) )
169 graph->
evalOpParm(myResolveFreeEdges, nodeidx,
"resolvealledges", time, 0);
170 myLayerAttr =
"layer"_UTsh;
171 if (
true && ( (
true&&!(((getUpdateDisable()==1))||((getDoResolve()==0)))) ) )
172 graph->
evalOpParm(myLayerAttr, nodeidx,
"layerattr", time, 0);
174 if (
true && ( (
true&&!(((getUpdateDisable()==1))||((getDoResolve()==0)))) ) )
175 graph->
evalOpParm(myLayerShock, nodeidx,
"layershock", time, 0);
176 myExternalFriction = 1.0;
177 if (
true && ( (
true&&!(((getDoResolve()==0)))) ) )
178 graph->
evalOpParm(myExternalFriction, nodeidx,
"externalfriction", time, 0);
179 mySelfFriction = 1.0;
180 if (
true && ( (
true&&!(((getDoResolve()==0)))) ) )
181 graph->
evalOpParm(mySelfFriction, nodeidx,
"selffriction", time, 0);
182 myStaticThreshold = 0.5;
183 if (
true && ( (
true&&!(((getDoResolve()==0)))) ) )
184 graph->
evalOpParm(myStaticThreshold, nodeidx,
"static_threshold", time, 0);
185 myKineticScale = 0.1;
186 if (
true && ( (
true&&!(((getDoResolve()==0)))) ) )
187 graph->
evalOpParm(myKineticScale, nodeidx,
"kinetic_scale", time, 0);
188 myConstantCollisionTopology =
true;
190 graph->
evalOpParm(myConstantCollisionTopology, nodeidx,
"constantcollisiontopology", time, 0);
191 mySharedCache =
""_UTsh;
193 graph->
evalOpParm(mySharedCache, nodeidx,
"sharedcache", time, 0);
196 graph->
evalOpParm(myResetKey, nodeidx,
"resetkey", time, 0);
197 myUpdateOverlap =
false;
198 if (
true && ( (
true&&!(((getUpdateDisable()==0)&&(getDoResolve()==1)))) ) )
199 graph->
evalOpParm(myUpdateOverlap, nodeidx,
"updateoverlap", time, 0);
215 template <
typename T>
222 if (idx.
size() != instance.
size()+1)
327 { doGetParmValue(idx, instance, value); }
329 { doGetParmValue(idx, instance, value); }
331 { doGetParmValue(idx, instance, value); }
333 { doGetParmValue(idx, instance, value); }
335 { doGetParmValue(idx, instance, value); }
337 { doGetParmValue(idx, instance, value); }
339 { doGetParmValue(idx, instance, value); }
341 { doGetParmValue(idx, instance, value); }
343 { doGetParmValue(idx, instance, value); }
345 { doGetParmValue(idx, instance, value); }
347 { doGetParmValue(idx, instance, value); }
349 template <
typename T>
356 if (idx.
size() != instance.
size()+1)
382 coerceValue(myRequirePairwiseAutoDisable, ( ( value ) ));
388 coerceValue(myResetDetangledPoints, ( ( value ) ));
436 coerceValue(myConstantCollisionTopology, ( ( value ) ));
452 { doSetParmValue(idx, instance, value); }
454 { doSetParmValue(idx, instance, value); }
456 { doSetParmValue(idx, instance, value); }
458 { doSetParmValue(idx, instance, value); }
460 { doSetParmValue(idx, instance, value); }
462 { doSetParmValue(idx, instance, value); }
464 { doSetParmValue(idx, instance, value); }
466 { doSetParmValue(idx, instance, value); }
468 { doSetParmValue(idx, instance, value); }
470 { doSetParmValue(idx, instance, value); }
472 { doSetParmValue(idx, instance, value); }
488 if (fieldnum.
size() < 1)
495 return "disableselfattr";
497 return "disableexternalattr";
507 return "pairedautodisable";
509 return "updatedisable";
511 return "resetdetangled";
521 return "capdisplace";
523 return "maxdisplace";
527 return "resolveallmax";
529 return "resolvealledges";
535 return "externalfriction";
537 return "selffriction";
539 return "static_threshold";
541 return "kinetic_scale";
543 return "constantcollisiontopology";
545 return "sharedcache";
549 return "updateoverlap";
557 if (fieldnum.
size() < 1)
558 return PARM_UNSUPPORTED;
657 loadData(is, rampdata);
675 int typelen = colon - data.
buffer();
689 {
int64 iv =
v; UTwrite(os, &iv); }
691 { UTwrite<fpreal64>(os, &
v); }
693 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y()); }
695 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
696 UTwrite<fpreal64>(os, &v.
z()); }
698 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
699 UTwrite<fpreal64>(os, &v.
z()); UTwrite<fpreal64>(os, &v.
w()); }
711 if (s) s->save(ostr);
713 saveData(os, result);
720 ostr << s->getDataTypeToken();
725 saveData(os, result);
729 void save(std::ostream &os)
const
733 saveData(os, myPrevpos);
734 saveData(os, myDisableSelfAttr);
735 saveData(os, myDisableExternalAttr);
736 saveData(os, myWeldAttr);
737 saveData(os, myThickness);
738 saveData(os, myDoSelf);
739 saveData(os, myDoTet);
740 saveData(os, myRequirePairwiseAutoDisable);
741 saveData(os, myUpdateDisable);
742 saveData(os, myResetDetangledPoints);
743 saveData(os, myDoMark);
744 saveData(os, myMarkAttr);
745 saveData(os, myDoResolve);
746 saveData(os, myMaxWeight);
747 saveData(os, myCapDisplace);
748 saveData(os, myMaxDisplace);
749 saveData(os, myResolveAll);
750 saveData(os, myResolveAllMax);
751 saveData(os, myResolveFreeEdges);
752 saveData(os, myLayerAttr);
753 saveData(os, myLayerShock);
754 saveData(os, myExternalFriction);
755 saveData(os, mySelfFriction);
756 saveData(os, myStaticThreshold);
757 saveData(os, myKineticScale);
758 saveData(os, myConstantCollisionTopology);
759 saveData(os, mySharedCache);
760 saveData(os, myResetKey);
761 saveData(os, myUpdateOverlap);
774 loadData(is, myPrevpos);
775 loadData(is, myDisableSelfAttr);
776 loadData(is, myDisableExternalAttr);
777 loadData(is, myWeldAttr);
778 loadData(is, myThickness);
779 loadData(is, myDoSelf);
780 loadData(is, myDoTet);
781 loadData(is, myRequirePairwiseAutoDisable);
782 loadData(is, myUpdateDisable);
783 loadData(is, myResetDetangledPoints);
784 loadData(is, myDoMark);
785 loadData(is, myMarkAttr);
786 loadData(is, myDoResolve);
787 loadData(is, myMaxWeight);
788 loadData(is, myCapDisplace);
789 loadData(is, myMaxDisplace);
790 loadData(is, myResolveAll);
791 loadData(is, myResolveAllMax);
792 loadData(is, myResolveFreeEdges);
793 loadData(is, myLayerAttr);
794 loadData(is, myLayerShock);
795 loadData(is, myExternalFriction);
796 loadData(is, mySelfFriction);
797 loadData(is, myStaticThreshold);
798 loadData(is, myKineticScale);
799 loadData(is, myConstantCollisionTopology);
800 loadData(is, mySharedCache);
801 loadData(is, myResetKey);
802 loadData(is, myUpdateOverlap);
812 if (!thissop)
return getPrevpos();
814 OP_Utils::evalOpParm(result, thissop,
"prevpos", cookparms.
getCookTime(), 0);
822 if (!thissop)
return getDisableSelfAttr();
824 OP_Utils::evalOpParm(result, thissop,
"disableselfattr", cookparms.
getCookTime(), 0);
832 if (!thissop)
return getDisableExternalAttr();
834 OP_Utils::evalOpParm(result, thissop,
"disableexternalattr", cookparms.
getCookTime(), 0);
842 if (!thissop)
return getWeldAttr();
844 OP_Utils::evalOpParm(result, thissop,
"weldattr", cookparms.
getCookTime(), 0);
852 if (!thissop)
return getThickness();
854 OP_Utils::evalOpParm(result, thissop,
"thickness", cookparms.
getCookTime(), 0);
862 if (!thissop)
return getDoSelf();
864 OP_Utils::evalOpParm(result, thissop,
"doself", cookparms.
getCookTime(), 0);
872 if (!thissop)
return getDoTet();
874 OP_Utils::evalOpParm(result, thissop,
"dotet", cookparms.
getCookTime(), 0);
882 if (!thissop)
return getRequirePairwiseAutoDisable();
884 OP_Utils::evalOpParm(result, thissop,
"pairedautodisable", cookparms.
getCookTime(), 0);
892 if (!thissop)
return getUpdateDisable();
894 OP_Utils::evalOpParm(result, thissop,
"updatedisable", cookparms.
getCookTime(), 0);
902 if (!thissop)
return getResetDetangledPoints();
904 OP_Utils::evalOpParm(result, thissop,
"resetdetangled", cookparms.
getCookTime(), 0);
912 if (!thissop)
return getDoMark();
914 OP_Utils::evalOpParm(result, thissop,
"domark", cookparms.
getCookTime(), 0);
922 if (!thissop)
return getMarkAttr();
924 OP_Utils::evalOpParm(result, thissop,
"markattr", cookparms.
getCookTime(), 0);
932 if (!thissop)
return getDoResolve();
934 OP_Utils::evalOpParm(result, thissop,
"doresolve", cookparms.
getCookTime(), 0);
942 if (!thissop)
return getMaxWeight();
944 OP_Utils::evalOpParm(result, thissop,
"maxweight", cookparms.
getCookTime(), 0);
952 if (!thissop)
return getCapDisplace();
954 OP_Utils::evalOpParm(result, thissop,
"capdisplace", cookparms.
getCookTime(), 0);
962 if (!thissop)
return getMaxDisplace();
964 OP_Utils::evalOpParm(result, thissop,
"maxdisplace", cookparms.
getCookTime(), 0);
972 if (!thissop)
return getResolveAll();
974 OP_Utils::evalOpParm(result, thissop,
"resolveall", cookparms.
getCookTime(), 0);
982 if (!thissop)
return getResolveAllMax();
984 OP_Utils::evalOpParm(result, thissop,
"resolveallmax", cookparms.
getCookTime(), 0);
992 if (!thissop)
return getResolveFreeEdges();
994 OP_Utils::evalOpParm(result, thissop,
"resolvealledges", cookparms.
getCookTime(), 0);
1002 if (!thissop)
return getLayerAttr();
1004 OP_Utils::evalOpParm(result, thissop,
"layerattr", cookparms.
getCookTime(), 0);
1012 if (!thissop)
return getLayerShock();
1014 OP_Utils::evalOpParm(result, thissop,
"layershock", cookparms.
getCookTime(), 0);
1022 if (!thissop)
return getExternalFriction();
1024 OP_Utils::evalOpParm(result, thissop,
"externalfriction", cookparms.
getCookTime(), 0);
1032 if (!thissop)
return getSelfFriction();
1034 OP_Utils::evalOpParm(result, thissop,
"selffriction", cookparms.
getCookTime(), 0);
1042 if (!thissop)
return getStaticThreshold();
1044 OP_Utils::evalOpParm(result, thissop,
"static_threshold", cookparms.
getCookTime(), 0);
1052 if (!thissop)
return getKineticScale();
1054 OP_Utils::evalOpParm(result, thissop,
"kinetic_scale", cookparms.
getCookTime(), 0);
1062 if (!thissop)
return getConstantCollisionTopology();
1064 OP_Utils::evalOpParm(result, thissop,
"constantcollisiontopology", cookparms.
getCookTime(), 0);
1072 if (!thissop)
return getSharedCache();
1074 OP_Utils::evalOpParm(result, thissop,
"sharedcache", cookparms.
getCookTime(), 0);
1082 if (!thissop)
return getResetKey();
1084 OP_Utils::evalOpParm(result, thissop,
"resetkey", cookparms.
getCookTime(), 0);
1092 if (!thissop)
return getUpdateOverlap();
1094 OP_Utils::evalOpParm(result, thissop,
"updateoverlap", cookparms.
getCookTime(), 0);
1106 bool myRequirePairwiseAutoDisable;
1107 bool myUpdateDisable;
1108 bool myResetDetangledPoints;
1116 int64 myResolveAllMax;
1117 bool myResolveFreeEdges;
1124 bool myConstantCollisionTopology;
1127 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
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
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
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
static void loadData(UT_IStream &is, UT_Vector4I &v)
bool getUpdateDisable() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
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