23 namespace SOP_WalkOnSurfaceEnums
34 using namespace UT::Literal;
51 using namespace UT::Literal;
68 using namespace UT::Literal;
85 using namespace UT::Literal;
103 mySrcPoints =
""_UTsh;
107 myDirAttrib =
"dir"_UTsh;
108 myVectorFieldAttrib =
"v"_UTsh;
111 myLengthAttrib =
"length"_UTsh;
112 myGlobalRotation = 0;
114 myUseMaxSteps =
false;
116 myBoundaryBehavior = 0;
117 myTerminationEdges =
""_UTsh;
118 myReflectionEdges =
""_UTsh;
119 myUseOutputPrimNum =
false;
120 myOutputPrimNum =
"hitprim"_UTsh;
121 myUseOutputPrimUVW =
false;
122 myOutputPrimUVW =
"hitprimuvw"_UTsh;
123 myUseCopyPointAttribs =
false;
124 myCopyPointAttribs =
"* ^v ^Alpha ^N"_UTsh;
125 myUseOutputTangent =
false;
126 myOutputTangent =
"tangent"_UTsh;
139 if (mySrcPoints != src.mySrcPoints)
return false;
140 if (myWalkingMethod != src.myWalkingMethod)
return false;
141 if (myStartDir != src.myStartDir)
return false;
142 if (myDirection != src.myDirection)
return false;
143 if (myDirAttrib != src.myDirAttrib)
return false;
144 if (myVectorFieldAttrib != src.myVectorFieldAttrib)
return false;
145 if (myLength != src.myLength)
return false;
146 if (myLengthScale != src.myLengthScale)
return false;
147 if (myLengthAttrib != src.myLengthAttrib)
return false;
148 if (myGlobalRotation != src.myGlobalRotation)
return false;
149 if (myFieldSymmetry != src.myFieldSymmetry)
return false;
150 if (myUseMaxSteps != src.myUseMaxSteps)
return false;
151 if (myMaxSteps != src.myMaxSteps)
return false;
152 if (myBoundaryBehavior != src.myBoundaryBehavior)
return false;
153 if (myTerminationEdges != src.myTerminationEdges)
return false;
154 if (myReflectionEdges != src.myReflectionEdges)
return false;
155 if (myUseOutputPrimNum != src.myUseOutputPrimNum)
return false;
156 if (myOutputPrimNum != src.myOutputPrimNum)
return false;
157 if (myUseOutputPrimUVW != src.myUseOutputPrimUVW)
return false;
158 if (myOutputPrimUVW != src.myOutputPrimUVW)
return false;
159 if (myUseCopyPointAttribs != src.myUseCopyPointAttribs)
return false;
160 if (myCopyPointAttribs != src.myCopyPointAttribs)
return false;
161 if (myUseOutputTangent != src.myUseOutputTangent)
return false;
162 if (myOutputTangent != src.myOutputTangent)
return false;
182 mySrcPoints =
""_UTsh;
184 graph->
evalOpParm(mySrcPoints, nodeidx,
"group", time, graph->
isDirect()?
nullptr:depnode);
187 graph->
evalOpParm(myWalkingMethod, nodeidx,
"walkingmethod", time, graph->
isDirect()?
nullptr:depnode);
189 if (
true && ( (
true&&!(((
int64(getWalkingMethod())!=0)))) ) )
190 graph->
evalOpParm(myStartDir, nodeidx,
"startdir", time, graph->
isDirect()?
nullptr:depnode);
192 if (
true && ( (
true&&!(((
int64(getWalkingMethod())!=0))||((
int64(getStartDir())!=0)))) ) )
193 graph->
evalOpParm(myDirection, nodeidx,
"dir", time, graph->
isDirect()?
nullptr:depnode);
194 myDirAttrib =
"dir"_UTsh;
195 if (
true && ( (
true&&!(((
int64(getWalkingMethod())!=0))||((
int64(getStartDir())!=1)))) ) )
196 graph->
evalOpParm(myDirAttrib, nodeidx,
"dirattrib", time, graph->
isDirect()?
nullptr:depnode);
197 myVectorFieldAttrib =
"v"_UTsh;
198 if (
true && ( (
true&&!(((
int64(getWalkingMethod())!=1)))) ) )
199 graph->
evalOpParm(myVectorFieldAttrib, nodeidx,
"fieldattrib", time, graph->
isDirect()?
nullptr:depnode);
202 graph->
evalOpParm(myLength, nodeidx,
"length", time, graph->
isDirect()?
nullptr:depnode);
205 graph->
evalOpParm(myLengthScale, nodeidx,
"lenscale", time, graph->
isDirect()?
nullptr:depnode);
206 myLengthAttrib =
"length"_UTsh;
207 if (
true && ( (
true&&!(((
int64(getLengthScale())!=1)))) ) )
208 graph->
evalOpParm(myLengthAttrib, nodeidx,
"lenattrib", time, graph->
isDirect()?
nullptr:depnode);
209 myGlobalRotation = 0;
211 graph->
evalOpParm(myGlobalRotation, nodeidx,
"globalrotation", time, graph->
isDirect()?
nullptr:depnode);
213 if (
true && ( (
true&&!(((
int64(getWalkingMethod())!=1)))) ) )
214 graph->
evalOpParm(myFieldSymmetry, nodeidx,
"symmetry", time, graph->
isDirect()?
nullptr:depnode);
215 myUseMaxSteps =
false;
217 graph->
evalOpParm(myUseMaxSteps, nodeidx,
"usemaxsteps", time, graph->
isDirect()?
nullptr:depnode);
219 if (
true && ( (
true&&!(((getUseMaxSteps()==0)))) ) )
220 graph->
evalOpParm(myMaxSteps, nodeidx,
"maxsteps", time, graph->
isDirect()?
nullptr:depnode);
221 myBoundaryBehavior = 0;
222 if (
true && ( (
true&&!(((
int64(getWalkingMethod())!=0)))) ) )
223 graph->
evalOpParm(myBoundaryBehavior, nodeidx,
"defaultbehavior", time, graph->
isDirect()?
nullptr:depnode);
224 myTerminationEdges =
""_UTsh;
226 graph->
evalOpParm(myTerminationEdges, nodeidx,
"terminationedges", time, graph->
isDirect()?
nullptr:depnode);
227 myReflectionEdges =
""_UTsh;
228 if (
true && ( (
true&&!(((
int64(getWalkingMethod())!=0)))) ) )
229 graph->
evalOpParm(myReflectionEdges, nodeidx,
"reflectionedges", time, graph->
isDirect()?
nullptr:depnode);
230 myUseOutputPrimNum =
false;
232 graph->
evalOpParm(myUseOutputPrimNum, nodeidx,
"useoutputprimnum", time, graph->
isDirect()?
nullptr:depnode);
233 myOutputPrimNum =
"hitprim"_UTsh;
234 if (
true && ( (
true&&!(((getUseOutputPrimNum()==0)))) ) )
235 graph->
evalOpParm(myOutputPrimNum, nodeidx,
"outputprimnum", time, graph->
isDirect()?
nullptr:depnode);
236 myUseOutputPrimUVW =
false;
238 graph->
evalOpParm(myUseOutputPrimUVW, nodeidx,
"useoutputprimuvw", time, graph->
isDirect()?
nullptr:depnode);
239 myOutputPrimUVW =
"hitprimuvw"_UTsh;
240 if (
true && ( (
true&&!(((getUseOutputPrimUVW()==0)))) ) )
241 graph->
evalOpParm(myOutputPrimUVW, nodeidx,
"outputprimuvw", time, graph->
isDirect()?
nullptr:depnode);
242 myUseCopyPointAttribs =
false;
244 graph->
evalOpParm(myUseCopyPointAttribs, nodeidx,
"usecopypointattribs", time, graph->
isDirect()?
nullptr:depnode);
245 myCopyPointAttribs =
"* ^v ^Alpha ^N"_UTsh;
246 if (
true && ( (
true&&!(((getUseCopyPointAttribs()==0)))) ) )
247 graph->
evalOpParm(myCopyPointAttribs, nodeidx,
"copypointattribs", time, graph->
isDirect()?
nullptr:depnode);
248 myUseOutputTangent =
false;
250 graph->
evalOpParm(myUseOutputTangent, nodeidx,
"useoutputtangent", time, graph->
isDirect()?
nullptr:depnode);
251 myOutputTangent =
"tangent"_UTsh;
252 if (
true && ( (
true&&!(((getUseOutputTangent()==0)))) ) )
253 graph->
evalOpParm(myOutputTangent, nodeidx,
"outputtangent", time, graph->
isDirect()?
nullptr:depnode);
269 template <
typename T>
276 if (idx.
size() != instance.
size()+1)
281 coerceValue(value, mySrcPoints);
284 coerceValue(value, myWalkingMethod);
287 coerceValue(value, myStartDir);
290 coerceValue(value, myDirection);
293 coerceValue(value, myDirAttrib);
296 coerceValue(value, myVectorFieldAttrib);
299 coerceValue(value, myLength);
302 coerceValue(value, myLengthScale);
305 coerceValue(value, myLengthAttrib);
308 coerceValue(value, myGlobalRotation);
311 coerceValue(value, myFieldSymmetry);
314 coerceValue(value, myUseMaxSteps);
317 coerceValue(value, myMaxSteps);
320 coerceValue(value, myBoundaryBehavior);
323 coerceValue(value, myTerminationEdges);
326 coerceValue(value, myReflectionEdges);
329 coerceValue(value, myUseOutputPrimNum);
332 coerceValue(value, myOutputPrimNum);
335 coerceValue(value, myUseOutputPrimUVW);
338 coerceValue(value, myOutputPrimUVW);
341 coerceValue(value, myUseCopyPointAttribs);
344 coerceValue(value, myCopyPointAttribs);
347 coerceValue(value, myUseOutputTangent);
350 coerceValue(value, myOutputTangent);
366 { doGetParmValue(idx, instance, value); }
368 { doGetParmValue(idx, instance, value); }
370 { doGetParmValue(idx, instance, value); }
372 { doGetParmValue(idx, instance, value); }
374 { doGetParmValue(idx, instance, value); }
376 { doGetParmValue(idx, instance, value); }
378 { doGetParmValue(idx, instance, value); }
380 { doGetParmValue(idx, instance, value); }
382 { doGetParmValue(idx, instance, value); }
384 { doGetParmValue(idx, instance, value); }
386 { doGetParmValue(idx, instance, value); }
388 template <
typename T>
395 if (idx.
size() != instance.
size()+1)
400 coerceValue(mySrcPoints, ( ( value ) ));
403 coerceValue(myWalkingMethod, clampMinValue(0, clampMaxValue(1, value ) ));
406 coerceValue(myStartDir, clampMinValue(0, clampMaxValue(1, value ) ));
409 coerceValue(myDirection, ( ( value ) ));
412 coerceValue(myDirAttrib, ( ( value ) ));
415 coerceValue(myVectorFieldAttrib, ( ( value ) ));
418 coerceValue(myLength, ( ( value ) ));
421 coerceValue(myLengthScale, clampMinValue(0, clampMaxValue(1, value ) ));
424 coerceValue(myLengthAttrib, ( ( value ) ));
427 coerceValue(myGlobalRotation, clampMinValue(-180, clampMaxValue(180, value ) ));
430 coerceValue(myFieldSymmetry, ( clampMaxValue(8, value ) ));
433 coerceValue(myUseMaxSteps, ( ( value ) ));
436 coerceValue(myMaxSteps, clampMinValue(0, ( value ) ));
439 coerceValue(myBoundaryBehavior, clampMinValue(0, clampMaxValue(1, value ) ));
442 coerceValue(myTerminationEdges, ( ( value ) ));
445 coerceValue(myReflectionEdges, ( ( value ) ));
448 coerceValue(myUseOutputPrimNum, ( ( value ) ));
451 coerceValue(myOutputPrimNum, ( ( value ) ));
454 coerceValue(myUseOutputPrimUVW, ( ( value ) ));
457 coerceValue(myOutputPrimUVW, ( ( value ) ));
460 coerceValue(myUseCopyPointAttribs, ( ( value ) ));
463 coerceValue(myCopyPointAttribs, ( ( value ) ));
466 coerceValue(myUseOutputTangent, ( ( value ) ));
469 coerceValue(myOutputTangent, ( ( value ) ));
476 { doSetParmValue(idx, instance, value); }
478 { doSetParmValue(idx, instance, value); }
480 { doSetParmValue(idx, instance, value); }
482 { doSetParmValue(idx, instance, value); }
484 { doSetParmValue(idx, instance, value); }
486 { doSetParmValue(idx, instance, value); }
488 { doSetParmValue(idx, instance, value); }
490 { doSetParmValue(idx, instance, value); }
492 { doSetParmValue(idx, instance, value); }
494 { doSetParmValue(idx, instance, value); }
496 { doSetParmValue(idx, instance, value); }
512 if (fieldnum.
size() < 1)
519 return "walkingmethod";
527 return "fieldattrib";
535 return "globalrotation";
539 return "usemaxsteps";
543 return "defaultbehavior";
545 return "terminationedges";
547 return "reflectionedges";
549 return "useoutputprimnum";
551 return "outputprimnum";
553 return "useoutputprimuvw";
555 return "outputprimuvw";
557 return "usecopypointattribs";
559 return "copypointattribs";
561 return "useoutputtangent";
563 return "outputtangent";
571 if (fieldnum.
size() < 1)
572 return PARM_UNSUPPORTED;
625 return PARM_UNSUPPORTED;
661 loadData(is, rampdata);
679 int typelen = colon - data.
buffer();
693 {
int64 iv =
v; UTwrite(os, &iv); }
695 { UTwrite<fpreal64>(os, &
v); }
697 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y()); }
699 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
700 UTwrite<fpreal64>(os, &v.
z()); }
702 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
703 UTwrite<fpreal64>(os, &v.
z()); UTwrite<fpreal64>(os, &v.
w()); }
715 if (s) s->save(ostr);
717 saveData(os, result);
724 ostr << s->getDataTypeToken();
729 saveData(os, result);
733 void save(std::ostream &os)
const
737 saveData(os, mySrcPoints);
738 saveData(os, myWalkingMethod);
739 saveData(os, myStartDir);
740 saveData(os, myDirection);
741 saveData(os, myDirAttrib);
742 saveData(os, myVectorFieldAttrib);
743 saveData(os, myLength);
744 saveData(os, myLengthScale);
745 saveData(os, myLengthAttrib);
746 saveData(os, myGlobalRotation);
747 saveData(os, myFieldSymmetry);
748 saveData(os, myUseMaxSteps);
749 saveData(os, myMaxSteps);
750 saveData(os, myBoundaryBehavior);
751 saveData(os, myTerminationEdges);
752 saveData(os, myReflectionEdges);
753 saveData(os, myUseOutputPrimNum);
754 saveData(os, myOutputPrimNum);
755 saveData(os, myUseOutputPrimUVW);
756 saveData(os, myOutputPrimUVW);
757 saveData(os, myUseCopyPointAttribs);
758 saveData(os, myCopyPointAttribs);
759 saveData(os, myUseOutputTangent);
760 saveData(os, myOutputTangent);
773 loadData(is, mySrcPoints);
774 loadData(is, myWalkingMethod);
775 loadData(is, myStartDir);
776 loadData(is, myDirection);
777 loadData(is, myDirAttrib);
778 loadData(is, myVectorFieldAttrib);
779 loadData(is, myLength);
780 loadData(is, myLengthScale);
781 loadData(is, myLengthAttrib);
782 loadData(is, myGlobalRotation);
783 loadData(is, myFieldSymmetry);
784 loadData(is, myUseMaxSteps);
785 loadData(is, myMaxSteps);
786 loadData(is, myBoundaryBehavior);
787 loadData(is, myTerminationEdges);
788 loadData(is, myReflectionEdges);
789 loadData(is, myUseOutputPrimNum);
790 loadData(is, myOutputPrimNum);
791 loadData(is, myUseOutputPrimUVW);
792 loadData(is, myOutputPrimUVW);
793 loadData(is, myUseCopyPointAttribs);
794 loadData(is, myCopyPointAttribs);
795 loadData(is, myUseOutputTangent);
796 loadData(is, myOutputTangent);
806 if (!thissop)
return getSrcPoints();
808 OP_Utils::evalOpParm(result, thissop,
"group", cookparms.
getCookTime(), 0);
816 if (!thissop)
return getWalkingMethod();
818 OP_Utils::evalOpParm(result, thissop,
"walkingmethod", cookparms.
getCookTime(), 0);
826 if (!thissop)
return getStartDir();
828 OP_Utils::evalOpParm(result, thissop,
"startdir", cookparms.
getCookTime(), 0);
836 if (!thissop)
return getDirection();
838 OP_Utils::evalOpParm(result, thissop,
"dir", cookparms.
getCookTime(), 0);
846 if (!thissop)
return getDirAttrib();
848 OP_Utils::evalOpParm(result, thissop,
"dirattrib", cookparms.
getCookTime(), 0);
856 if (!thissop)
return getVectorFieldAttrib();
858 OP_Utils::evalOpParm(result, thissop,
"fieldattrib", cookparms.
getCookTime(), 0);
866 if (!thissop)
return getLength();
868 OP_Utils::evalOpParm(result, thissop,
"length", cookparms.
getCookTime(), 0);
876 if (!thissop)
return getLengthScale();
878 OP_Utils::evalOpParm(result, thissop,
"lenscale", cookparms.
getCookTime(), 0);
886 if (!thissop)
return getLengthAttrib();
888 OP_Utils::evalOpParm(result, thissop,
"lenattrib", cookparms.
getCookTime(), 0);
896 if (!thissop)
return getGlobalRotation();
898 OP_Utils::evalOpParm(result, thissop,
"globalrotation", cookparms.
getCookTime(), 0);
906 if (!thissop)
return getFieldSymmetry();
908 OP_Utils::evalOpParm(result, thissop,
"symmetry", cookparms.
getCookTime(), 0);
916 if (!thissop)
return getUseMaxSteps();
918 OP_Utils::evalOpParm(result, thissop,
"usemaxsteps", cookparms.
getCookTime(), 0);
926 if (!thissop)
return getMaxSteps();
928 OP_Utils::evalOpParm(result, thissop,
"maxsteps", cookparms.
getCookTime(), 0);
936 if (!thissop)
return getBoundaryBehavior();
938 OP_Utils::evalOpParm(result, thissop,
"defaultbehavior", cookparms.
getCookTime(), 0);
946 if (!thissop)
return getTerminationEdges();
948 OP_Utils::evalOpParm(result, thissop,
"terminationedges", cookparms.
getCookTime(), 0);
956 if (!thissop)
return getReflectionEdges();
958 OP_Utils::evalOpParm(result, thissop,
"reflectionedges", cookparms.
getCookTime(), 0);
966 if (!thissop)
return getUseOutputPrimNum();
968 OP_Utils::evalOpParm(result, thissop,
"useoutputprimnum", cookparms.
getCookTime(), 0);
976 if (!thissop)
return getOutputPrimNum();
978 OP_Utils::evalOpParm(result, thissop,
"outputprimnum", cookparms.
getCookTime(), 0);
986 if (!thissop)
return getUseOutputPrimUVW();
988 OP_Utils::evalOpParm(result, thissop,
"useoutputprimuvw", cookparms.
getCookTime(), 0);
996 if (!thissop)
return getOutputPrimUVW();
998 OP_Utils::evalOpParm(result, thissop,
"outputprimuvw", cookparms.
getCookTime(), 0);
1006 if (!thissop)
return getUseCopyPointAttribs();
1008 OP_Utils::evalOpParm(result, thissop,
"usecopypointattribs", cookparms.
getCookTime(), 0);
1016 if (!thissop)
return getCopyPointAttribs();
1018 OP_Utils::evalOpParm(result, thissop,
"copypointattribs", cookparms.
getCookTime(), 0);
1026 if (!thissop)
return getUseOutputTangent();
1028 OP_Utils::evalOpParm(result, thissop,
"useoutputtangent", cookparms.
getCookTime(), 0);
1036 if (!thissop)
return getOutputTangent();
1038 OP_Utils::evalOpParm(result, thissop,
"outputtangent", cookparms.
getCookTime(), 0);
1044 int64 myWalkingMethod;
1050 int64 myLengthScale;
1053 int64 myFieldSymmetry;
1056 int64 myBoundaryBehavior;
1059 bool myUseOutputPrimNum;
1061 bool myUseOutputPrimUVW;
1063 bool myUseCopyPointAttribs;
1065 bool myUseOutputTangent;
static void loadData(UT_IStream &is, UT_StringHolder &v)
const char * getNestParmName(TempIndex fieldnum) const override
static void saveData(std::ostream &os, UT_Matrix4D v)
SOP_Node * getNode() const
static void saveData(std::ostream &os, UT_Vector4D v)
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
bool load(UT_IStream &is)
void setUseOutputPrimUVW(bool val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
exint getNestNumParms(TempIndex idx) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
UT_StringHolder opSrcPoints(const SOP_NodeVerb::CookParms &cookparms) const
void setWalkingMethod(WalkingMethod val)
fpreal64 opLength(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void setLengthAttrib(const UT_StringHolder &val)
GT_API const UT_StringHolder time
void setUseMaxSteps(bool val)
constexpr SYS_FORCE_INLINE T & y() noexcept
fpreal64 getGlobalRotation() const
bool getUseMaxSteps() const
UT_StringHolder opOutputTangent(const SOP_NodeVerb::CookParms &cookparms) const
GLsizei const GLfloat * value
ParmType getNestParmType(TempIndex fieldnum) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
void setGlobalRotation(fpreal64 val)
UT_StringHolder opDirAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, int64 &v)
const OP_Context & context() const
static void loadData(UT_IStream &is, UT_Vector3D &v)
void setDirAttrib(const UT_StringHolder &val)
void setUseOutputTangent(bool val)
UT_StringHolder opVectorFieldAttrib(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & z() noexcept
void setTerminationEdges(const UT_StringHolder &val)
SYS_FORCE_INLINE const char * buffer() const
void setOutputTangent(const UT_StringHolder &val)
void setOutputPrimNum(const UT_StringHolder &val)
const UT_StringHolder & getOutputPrimUVW() const
An output stream object that owns its own string buffer storage.
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
UT_StringHolder opReflectionEdges(const SOP_NodeVerb::CookParms &cookparms) const
void setMaxSteps(int64 val)
void setStartDir(StartDir val)
**But if you need a result
void save(std::ostream &os) const
LengthScale getLengthScale() 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.
static void loadData(UT_IStream &is, UT_Vector2D &v)
UT_StringHolder opOutputPrimUVW(const SOP_NodeVerb::CookParms &cookparms) const
void copyFrom(const OP_NodeParms *src) override
bool getUseCopyPointAttribs() const
constexpr SYS_FORCE_INLINE T & x() noexcept
static void saveData(std::ostream &os, UT_StringHolder s)
BoundaryBehavior getBoundaryBehavior() const
UT_StringHolder opLengthAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setVectorFieldAttrib(const UT_StringHolder &val)
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
constexpr SYS_FORCE_INLINE T & x() noexcept
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
bool opUseOutputPrimUVW(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector3I &v)
void setUseCopyPointAttribs(bool val)
UT_StringHolder opTerminationEdges(const SOP_NodeVerb::CookParms &cookparms) const
void setOutputPrimUVW(const UT_StringHolder &val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
int64 opFieldSymmetry(const SOP_NodeVerb::CookParms &cookparms) const
bool getUseOutputTangent() const
const UT_StringHolder & getDirAttrib() const
bool operator==(const SOP_WalkOnSurfaceParms &src) const
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
UT_StringHolder opOutputPrimNum(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D opDirection(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
void setBoundaryBehavior(BoundaryBehavior val)
constexpr SYS_FORCE_INLINE T & z() noexcept
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
const OP_GraphProxy * graph() const
bool operator!=(const SOP_WalkOnSurfaceParms &src) const
fpreal64 getLength() const
bool isParmColorRamp(exint idx) const override
static void loadData(UT_IStream &is, UT_Vector4D &v)
bool opUseMaxSteps(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
int64 getMaxSteps() const
StartDir getStartDir() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
static void saveData(std::ostream &os, UT_Vector2D v)
WalkingMethod getWalkingMethod() const
void setLengthScale(LengthScale val)
static void saveData(std::ostream &os, fpreal64 v)
void setReflectionEdges(const UT_StringHolder &val)
const UT_StringHolder & getReflectionEdges() const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
UT_Vector3T< fpreal64 > UT_Vector3D
static void loadData(UT_IStream &is, UT_Matrix2D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
LengthScale opLengthScale(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, bool &v)
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
void setDirection(UT_Vector3D val)
SYS_FORCE_INLINE UT_StringHolder getToken(WalkingMethod enum_value)
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
StartDir opStartDir(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opCopyPointAttribs(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
void saveBinary(std::ostream &os) const
Save string to binary stream.
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
static void loadData(UT_IStream &is, UT_Matrix3D &v)
GT_API const UT_StringHolder version
bool opUseCopyPointAttribs(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, fpreal64 &v)
void setFieldSymmetry(int64 val)
static void saveData(std::ostream &os, PRM_DataItemHandle s)
bool opUseOutputPrimNum(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getOutputPrimNum() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
DEP_MicroNode * depnode() const
int64 getFieldSymmetry() const
LeafData & operator=(const LeafData &)=delete
bool opUseOutputTangent(const SOP_NodeVerb::CookParms &cookparms) const
Utility class for containing a color ramp.
constexpr SYS_FORCE_INLINE T & w() noexcept
void setSrcPoints(const UT_StringHolder &val)
virtual UT_StringHolder baseGetSignature() const
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
WalkingMethod opWalkingMethod(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getLengthAttrib() const
const UT_StringHolder & getCopyPointAttribs() const
const UT_StringHolder & getSrcPoints() const
const UT_StringHolder & getTerminationEdges() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
static void saveData(std::ostream &os, int64 v)
fpreal getCookTime() const
static void loadData(UT_IStream &is, UT_Matrix4D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
const char * findChar(int c) const
static void saveData(std::ostream &os, UT_Matrix3D v)
BoundaryBehavior opBoundaryBehavior(const SOP_NodeVerb::CookParms &cookparms) const
int64 opMaxSteps(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getOutputTangent() const
bool getUseOutputPrimUVW() const
static void saveData(std::ostream &os, UT_Vector3D v)
exint bread(uint8 *buffer, exint asize=1)
static void saveData(std::ostream &os, UT_Matrix2D v)
constexpr SYS_FORCE_INLINE T & y() noexcept
fpreal64 opGlobalRotation(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
static void loadData(UT_IStream &is, UT_Vector4I &v)
void setLength(fpreal64 val)
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
static void saveData(std::ostream &os, bool v)
UT_Vector3D getDirection() const
static void loadData(UT_IStream &is, UT_Vector2I &v)
void loadFromOpSubclass(const LoadParms &loadparms) override
const UT_StringHolder & getVectorFieldAttrib() const
constexpr SYS_FORCE_INLINE T & y() noexcept
SYS_FORCE_INLINE bool isstring() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
bool getUseOutputPrimNum() const
void setCopyPointAttribs(const UT_StringHolder &val)
constexpr SYS_FORCE_INLINE T & x() noexcept
void setUseOutputPrimNum(bool val)