20 using namespace UT::Literal;
37 myOverrideOutput =
false;
40 myOverrideBounds =
false;
54 myFileName =
"./sdf$F4.simdata"_sh;
56 myBuildPolySoup =
false;
66 if (myOutput != src.myOutput)
return false;
67 if (myMode != src.myMode)
return false;
68 if (myUniformSamples != src.myUniformSamples)
return false;
69 if (myDivs != src.myDivs)
return false;
70 if (mySampleDiv != src.mySampleDiv)
return false;
71 if (myDivSize != src.myDivSize)
return false;
72 if (myOverrideOutput != src.myOverrideOutput)
return false;
73 if (myIsoDiv != src.myIsoDiv)
return false;
74 if (myPadBounds != src.myPadBounds)
return false;
75 if (myOverrideBounds != src.myOverrideBounds)
return false;
76 if (myMin != src.myMin)
return false;
77 if (myMax != src.myMax)
return false;
78 if (myTol != src.myTol)
return false;
79 if (myOffset != src.myOffset)
return false;
80 if (myLaserScan != src.myLaserScan)
return false;
81 if (myFixSigns != src.myFixSigns)
return false;
82 if (myForceBounds != src.myForceBounds)
return false;
83 if (myInvert != src.myInvert)
return false;
84 if (myNumNeighbour != src.myNumNeighbour)
return false;
85 if (mySweepCount != src.mySweepCount)
return false;
86 if (mySweepThreshold != src.mySweepThreshold)
return false;
87 if (myTetraType != src.myTetraType)
return false;
88 if (myFileMode != src.myFileMode)
return false;
89 if (myFileName != src.myFileName)
return false;
90 if (myName != src.myName)
return false;
91 if (myBuildPolySoup != src.myBuildPolySoup)
return false;
106 graph->
evalOpParm(myOutput, nodeidx,
"output", time, 0);
109 graph->
evalOpParm(myMode, nodeidx,
"mode", time, 0);
110 myUniformSamples = 4;
112 graph->
evalOpParm(myUniformSamples, nodeidx,
"uniformsamples", time, 0);
115 graph->
evalOpParm(myDivs, nodeidx,
"divs", time, 0);
118 graph->
evalOpParm(mySampleDiv, nodeidx,
"samplediv", time, 0);
121 graph->
evalOpParm(myDivSize, nodeidx,
"divsize", time, 0);
122 myOverrideOutput =
false;
124 graph->
evalOpParm(myOverrideOutput, nodeidx,
"overrideoutput", time, 0);
127 graph->
evalOpParm(myIsoDiv, nodeidx,
"isodiv", time, 0);
130 graph->
evalOpParm(myPadBounds, nodeidx,
"padbounds", time, 0);
131 myOverrideBounds =
false;
133 graph->
evalOpParm(myOverrideBounds, nodeidx,
"overridebounds", time, 0);
136 graph->
evalOpParm(myMin, nodeidx,
"min", time, 0);
139 graph->
evalOpParm(myMax, nodeidx,
"max", time, 0);
142 graph->
evalOpParm(myTol, nodeidx,
"tol", time, 0);
145 graph->
evalOpParm(myOffset, nodeidx,
"offset", time, 0);
148 graph->
evalOpParm(myLaserScan, nodeidx,
"laserscan", time, 0);
151 graph->
evalOpParm(myFixSigns, nodeidx,
"fixsigns", time, 0);
152 myForceBounds =
true;
154 graph->
evalOpParm(myForceBounds, nodeidx,
"forcebounds", time, 0);
157 graph->
evalOpParm(myInvert, nodeidx,
"invert", time, 0);
160 graph->
evalOpParm(myNumNeighbour, nodeidx,
"numneighbour", time, 0);
163 graph->
evalOpParm(mySweepCount, nodeidx,
"sweepcount", time, 0);
164 mySweepThreshold = 2;
166 graph->
evalOpParm(mySweepThreshold, nodeidx,
"sweepalpha", time, 0);
169 graph->
evalOpParm(myTetraType, nodeidx,
"tetratype", time, 0);
172 graph->
evalOpParm(myFileMode, nodeidx,
"filemode", time, 0);
173 myFileName =
"./sdf$F4.simdata"_sh;
174 if (
true && ( (getFileMode()!=3) ) )
175 graph->
evalOpParm(myFileName, nodeidx,
"filename", time, 0);
178 graph->
evalOpParm(myName, nodeidx,
"name", time, 0);
179 myBuildPolySoup =
false;
181 graph->
evalOpParm(myBuildPolySoup, nodeidx,
"buildpolysoup", time, 0);
197 template <
typename T>
204 if (idx.
size() != instance.
size()+1)
209 coerceValue(value, myOutput);
212 coerceValue(value, myMode);
215 coerceValue(value, myUniformSamples);
218 coerceValue(value, myDivs);
221 coerceValue(value, mySampleDiv);
224 coerceValue(value, myDivSize);
227 coerceValue(value, myOverrideOutput);
230 coerceValue(value, myIsoDiv);
233 coerceValue(value, myPadBounds);
236 coerceValue(value, myOverrideBounds);
239 coerceValue(value, myMin);
242 coerceValue(value, myMax);
245 coerceValue(value, myTol);
248 coerceValue(value, myOffset);
251 coerceValue(value, myLaserScan);
254 coerceValue(value, myFixSigns);
257 coerceValue(value, myForceBounds);
260 coerceValue(value, myInvert);
263 coerceValue(value, myNumNeighbour);
266 coerceValue(value, mySweepCount);
269 coerceValue(value, mySweepThreshold);
272 coerceValue(value, myTetraType);
275 coerceValue(value, myFileMode);
278 coerceValue(value, myFileName);
281 coerceValue(value, myName);
284 coerceValue(value, myBuildPolySoup);
291 { doGetParmValue(idx, instance, value); }
293 { doGetParmValue(idx, instance, value); }
295 { doGetParmValue(idx, instance, value); }
297 { doGetParmValue(idx, instance, value); }
299 { doGetParmValue(idx, instance, value); }
301 { doGetParmValue(idx, instance, value); }
303 { doGetParmValue(idx, instance, value); }
305 { doGetParmValue(idx, instance, value); }
307 { doGetParmValue(idx, instance, value); }
309 { doGetParmValue(idx, instance, value); }
311 { doGetParmValue(idx, instance, value); }
313 template <
typename T>
320 if (idx.
size() != instance.
size()+1)
325 coerceValue(myOutput, value);
328 coerceValue(myMode, value);
331 coerceValue(myUniformSamples, value);
334 coerceValue(myDivs, value);
337 coerceValue(mySampleDiv, value);
340 coerceValue(myDivSize, value);
343 coerceValue(myOverrideOutput, value);
346 coerceValue(myIsoDiv, value);
349 coerceValue(myPadBounds, value);
352 coerceValue(myOverrideBounds, value);
355 coerceValue(myMin, value);
358 coerceValue(myMax, value);
361 coerceValue(myTol, value);
364 coerceValue(myOffset, value);
367 coerceValue(myLaserScan, value);
370 coerceValue(myFixSigns, value);
373 coerceValue(myForceBounds, value);
376 coerceValue(myInvert, value);
379 coerceValue(myNumNeighbour, value);
382 coerceValue(mySweepCount, value);
385 coerceValue(mySweepThreshold, value);
388 coerceValue(myTetraType, value);
391 coerceValue(myFileMode, value);
394 coerceValue(myFileName, value);
397 coerceValue(myName, value);
400 coerceValue(myBuildPolySoup, value);
407 { doSetParmValue(idx, instance, value); }
409 { doSetParmValue(idx, instance, value); }
411 { doSetParmValue(idx, instance, value); }
413 { doSetParmValue(idx, instance, value); }
415 { doSetParmValue(idx, instance, value); }
417 { doSetParmValue(idx, instance, value); }
419 { doSetParmValue(idx, instance, value); }
421 { doSetParmValue(idx, instance, value); }
423 { doSetParmValue(idx, instance, value); }
425 { doSetParmValue(idx, instance, value); }
427 { doSetParmValue(idx, instance, value); }
443 if (fieldnum.
size() < 1)
452 return "uniformsamples";
460 return "overrideoutput";
466 return "overridebounds";
480 return "forcebounds";
484 return "numneighbour";
498 return "buildpolysoup";
506 if (fieldnum.
size() < 1)
507 return PARM_UNSUPPORTED;
564 return PARM_UNSUPPORTED;
600 loadData(is, rampdata);
618 int typelen = colon - data.
buffer();
632 {
int64 iv =
v; UTwrite(os, &iv); }
634 { UTwrite<fpreal64>(os, &
v); }
636 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y()); }
638 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
639 UTwrite<fpreal64>(os, &v.
z()); }
641 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
642 UTwrite<fpreal64>(os, &v.
z()); UTwrite<fpreal64>(os, &v.
w()); }
654 if (s) s->save(ostr);
656 saveData(os, result);
663 ostr << s->getDataTypeToken();
668 saveData(os, result);
672 void save(std::ostream &os)
const
676 saveData(os, myOutput);
677 saveData(os, myMode);
678 saveData(os, myUniformSamples);
679 saveData(os, myDivs);
680 saveData(os, mySampleDiv);
681 saveData(os, myDivSize);
682 saveData(os, myOverrideOutput);
683 saveData(os, myIsoDiv);
684 saveData(os, myPadBounds);
685 saveData(os, myOverrideBounds);
689 saveData(os, myOffset);
690 saveData(os, myLaserScan);
691 saveData(os, myFixSigns);
692 saveData(os, myForceBounds);
693 saveData(os, myInvert);
694 saveData(os, myNumNeighbour);
695 saveData(os, mySweepCount);
696 saveData(os, mySweepThreshold);
697 saveData(os, myTetraType);
698 saveData(os, myFileMode);
699 saveData(os, myFileName);
700 saveData(os, myName);
701 saveData(os, myBuildPolySoup);
714 loadData(is, myOutput);
715 loadData(is, myMode);
716 loadData(is, myUniformSamples);
717 loadData(is, myDivs);
718 loadData(is, mySampleDiv);
719 loadData(is, myDivSize);
720 loadData(is, myOverrideOutput);
721 loadData(is, myIsoDiv);
722 loadData(is, myPadBounds);
723 loadData(is, myOverrideBounds);
727 loadData(is, myOffset);
728 loadData(is, myLaserScan);
729 loadData(is, myFixSigns);
730 loadData(is, myForceBounds);
731 loadData(is, myInvert);
732 loadData(is, myNumNeighbour);
733 loadData(is, mySweepCount);
734 loadData(is, mySweepThreshold);
735 loadData(is, myTetraType);
736 loadData(is, myFileMode);
737 loadData(is, myFileName);
738 loadData(is, myName);
739 loadData(is, myBuildPolySoup);
749 if (!thissop)
return getOutput();
751 OP_Utils::evalOpParm(result, thissop,
"output", cookparms.
getCookTime(), 0);
759 if (!thissop)
return getMode();
761 OP_Utils::evalOpParm(result, thissop,
"mode", cookparms.
getCookTime(), 0);
769 if (!thissop)
return getUniformSamples();
771 OP_Utils::evalOpParm(result, thissop,
"uniformsamples", cookparms.
getCookTime(), 0);
779 if (!thissop)
return getDivs();
781 OP_Utils::evalOpParm(result, thissop,
"divs", cookparms.
getCookTime(), 0);
789 if (!thissop)
return getSampleDiv();
791 OP_Utils::evalOpParm(result, thissop,
"samplediv", cookparms.
getCookTime(), 0);
799 if (!thissop)
return getDivSize();
801 OP_Utils::evalOpParm(result, thissop,
"divsize", cookparms.
getCookTime(), 0);
809 if (!thissop)
return getOverrideOutput();
811 OP_Utils::evalOpParm(result, thissop,
"overrideoutput", cookparms.
getCookTime(), 0);
819 if (!thissop)
return getIsoDiv();
821 OP_Utils::evalOpParm(result, thissop,
"isodiv", cookparms.
getCookTime(), 0);
829 if (!thissop)
return getPadBounds();
831 OP_Utils::evalOpParm(result, thissop,
"padbounds", cookparms.
getCookTime(), 0);
839 if (!thissop)
return getOverrideBounds();
841 OP_Utils::evalOpParm(result, thissop,
"overridebounds", cookparms.
getCookTime(), 0);
849 if (!thissop)
return getMin();
851 OP_Utils::evalOpParm(result, thissop,
"min", cookparms.
getCookTime(), 0);
859 if (!thissop)
return getMax();
861 OP_Utils::evalOpParm(result, thissop,
"max", cookparms.
getCookTime(), 0);
869 if (!thissop)
return getTol();
871 OP_Utils::evalOpParm(result, thissop,
"tol", cookparms.
getCookTime(), 0);
879 if (!thissop)
return getOffset();
881 OP_Utils::evalOpParm(result, thissop,
"offset", cookparms.
getCookTime(), 0);
889 if (!thissop)
return getLaserScan();
891 OP_Utils::evalOpParm(result, thissop,
"laserscan", cookparms.
getCookTime(), 0);
899 if (!thissop)
return getFixSigns();
901 OP_Utils::evalOpParm(result, thissop,
"fixsigns", cookparms.
getCookTime(), 0);
909 if (!thissop)
return getForceBounds();
911 OP_Utils::evalOpParm(result, thissop,
"forcebounds", cookparms.
getCookTime(), 0);
919 if (!thissop)
return getInvert();
921 OP_Utils::evalOpParm(result, thissop,
"invert", cookparms.
getCookTime(), 0);
929 if (!thissop)
return getNumNeighbour();
931 OP_Utils::evalOpParm(result, thissop,
"numneighbour", cookparms.
getCookTime(), 0);
939 if (!thissop)
return getSweepCount();
941 OP_Utils::evalOpParm(result, thissop,
"sweepcount", cookparms.
getCookTime(), 0);
949 if (!thissop)
return getSweepThreshold();
951 OP_Utils::evalOpParm(result, thissop,
"sweepalpha", cookparms.
getCookTime(), 0);
959 if (!thissop)
return getTetraType();
961 OP_Utils::evalOpParm(result, thissop,
"tetratype", cookparms.
getCookTime(), 0);
969 if (!thissop)
return getFileMode();
971 OP_Utils::evalOpParm(result, thissop,
"filemode", cookparms.
getCookTime(), 0);
979 if (!thissop)
return getFileName();
981 OP_Utils::evalOpParm(result, thissop,
"filename", cookparms.
getCookTime(), 0);
989 if (!thissop)
return getName();
991 OP_Utils::evalOpParm(result, thissop,
"name", cookparms.
getCookTime(), 0);
999 if (!thissop)
return getBuildPolySoup();
1001 OP_Utils::evalOpParm(result, thissop,
"buildpolysoup", cookparms.
getCookTime(), 0);
1008 int64 myUniformSamples;
1012 bool myOverrideOutput;
1015 bool myOverrideBounds;
1024 int64 myNumNeighbour;
1026 int64 mySweepThreshold;
1031 bool myBuildPolySoup;
int64 opUniformSamples(const SOP_NodeVerb::CookParms &cookparms) const
bool opForceBounds(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector3I &v)
static void saveData(std::ostream &os, UT_Vector4D v)
void setOffset(fpreal64 val)
bool getLaserScan() const
void setForceBounds(bool val)
void setLaserScan(bool val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
void setOutput(int64 val)
bool opOverrideOutput(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, fpreal64 &v)
void setOverrideOutput(bool val)
SOP_Node * getNode() const
bool operator!=(const SOP_IsoOffsetParms &src) const
bool opInvert(const SOP_NodeVerb::CookParms &cookparms) const
exint getNestNumParms(TempIndex idx) const override
void setTetraType(int64 val)
const UT_StringHolder & getName() const
void setIsoDiv(UT_Vector3I val)
int64 getTetraType() const
exint bread(int32 *buffer, exint asize=1)
GT_API const UT_StringHolder time
static void loadData(UT_IStream &is, UT_Vector3D &v)
void setMin(UT_Vector3D val)
GLuint const GLfloat * val
void buildFromOp(const SOP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
bool getForceBounds() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
void loadFromOpSubclass(const LoadParms &loadparms) override
void setNumNeighbour(int64 val)
fpreal64 getOffset() const
SYS_FORCE_INLINE const char * buffer() const
int64 opFileMode(const SOP_NodeVerb::CookParms &cookparms) const
const SOP_GraphProxy * graph() const
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
fpreal64 opDivSize(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
bool load(UT_IStream &is)
int64 opMode(const SOP_NodeVerb::CookParms &cookparms) const
An output stream object that owns its own string buffer storage.
UT_Vector3I opIsoDiv(const SOP_NodeVerb::CookParms &cookparms) const
bool getPadBounds() const
static void saveData(std::ostream &os, UT_Matrix2D v)
int64 getUniformSamples() const
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
static void saveData(std::ostream &os, UT_Vector2D v)
int64 opNumNeighbour(const SOP_NodeVerb::CookParms &cookparms) const
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
UT_Vector3D getMax() const
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
bool getBuildPolySoup() const
UT_Vector3I getDivs() const
UT_StringHolder opFileName(const SOP_NodeVerb::CookParms &cookparms) const
bool opOverrideBounds(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const SOP_IsoOffsetParms &src) const
int64 getSweepCount() const
static void loadData(UT_IStream &is, bool &v)
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
void copyFrom(const SOP_NodeParms *src) override
ParmType getNestParmType(TempIndex fieldnum) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
UT_Vector3D opMin(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector2D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
void setDivs(UT_Vector3I val)
fpreal64 getDivSize() const
const UT_StringHolder & getFileName() const
static void saveData(std::ostream &os, UT_Matrix3D v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
void setDivSize(fpreal64 val)
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
static void saveData(std::ostream &os, PRM_DataItemHandle s)
GLint GLenum GLsizei GLint GLsizei const void * data
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
int64 opOutput(const SOP_NodeVerb::CookParms &cookparms) const
void setName(const UT_StringHolder &val)
int64 getNumNeighbour() const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
UT_Vector3D getMin() const
static void saveData(std::ostream &os, UT_StringHolder s)
static void loadData(UT_IStream &is, UT_Vector4D &v)
int64 getSampleDiv() const
void setTol(fpreal64 val)
void setBuildPolySoup(bool val)
UT_Vector3D opMax(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3I getIsoDiv() const
bool getOverrideOutput() const
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
void setFileName(const UT_StringHolder &val)
void setUniformSamples(int64 val)
static void saveData(std::ostream &os, UT_Vector3D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
void saveBinary(std::ostream &os) const
Save string to binary stream.
bool getOverrideBounds() const
int64 opSweepThreshold(const SOP_NodeVerb::CookParms &cookparms) const
GT_API const UT_StringHolder version
DEP_MicroNode * depnode() const
static void saveData(std::ostream &os, bool v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
static void loadData(UT_IStream &is, int64 &v)
void setSweepCount(int64 val)
static void loadData(UT_IStream &is, UT_Vector2I &v)
void setMax(UT_Vector3D val)
const char * getNestParmName(TempIndex fieldnum) const override
static void loadData(UT_IStream &is, UT_Matrix2D &v)
fpreal64 opOffset(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opName(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
void setFixSigns(bool val)
bool opBuildPolySoup(const SOP_NodeVerb::CookParms &cookparms) const
bool opPadBounds(const SOP_NodeVerb::CookParms &cookparms) const
void setSweepThreshold(int64 val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
Utility class for containing a color ramp.
void setPadBounds(bool val)
static void loadData(UT_IStream &is, UT_Matrix4D &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
GLdouble GLdouble GLdouble r
int64 getSweepThreshold() const
int64 opTetraType(const SOP_NodeVerb::CookParms &cookparms) const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
bool opFixSigns(const SOP_NodeVerb::CookParms &cookparms) const
void setOverrideBounds(bool val)
int64 getFileMode() const
fpreal getCookTime() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
void setFileMode(int64 val)
const char * findChar(int c) const
void save(std::ostream &os) const
UT_Vector3I opDivs(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_StringHolder &v)
static void saveData(std::ostream &os, UT_Matrix4D v)
void setSampleDiv(int64 val)
bool opLaserScan(const SOP_NodeVerb::CookParms &cookparms) const
int64 opSampleDiv(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
static void loadData(UT_IStream &is, UT_Vector4I &v)
GLsizei const GLfloat * value
static void loadData(UT_IStream &is, UT_Matrix3D &v)
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
fpreal64 opTol(const SOP_NodeVerb::CookParms &cookparms) const
const OP_Context & context() const
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
static void saveData(std::ostream &os, int64 v)
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
SYS_FORCE_INLINE bool isstring() const
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
static void saveData(std::ostream &os, fpreal64 v)
~SOP_IsoOffsetParms() override
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
int64 opSweepCount(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override