HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_WalkOnSurface.proto.h
Go to the documentation of this file.
1 /* Automagically Generated by generate_proto.py
2  * Do not Edit
3  */
4 #pragma once
5 
6 #include <SOP/SOP_API.h>
7 #include <SOP/SOP_NodeVerb.h>
8 #include <OP/OP_GraphProxy.h>
9 
10 #include <OP/OP_Utils.h>
11 #include <PRM/PRM_Parm.h>
12 #include <UT/UT_IStream.h>
13 #include <UT/UT_NTStreamUtil.h>
14 #include <UT/UT_Ramp.h>
15 #include <UT/UT_SharedPtr.h>
16 #include <UT/UT_StringHolder.h>
17 #include <UT/UT_StringStream.h>
18 #include <UT/UT_VectorTypes.h>
19 #include <UT/UT_EnvControl.h>
20 #include <SYS/SYS_Types.h>
21 
22 class DEP_MicroNode;
23 namespace SOP_WalkOnSurfaceEnums
24 {
25  enum class WalkingMethod
26  {
27  GEODESIC = 0,
29  };
30 
32  getToken(WalkingMethod enum_value)
33  {
34  using namespace UT::Literal;
35  switch (enum_value) {
36  case WalkingMethod::GEODESIC: return "geodesic"_sh;
37  case WalkingMethod::STREAMLINE: return "streamline"_sh;
38  default: UT_ASSERT(false); return ""_sh;
39  }
40  }
41 
42  enum class StartDir
43  {
44  FROMPARM = 0,
45  FROMATTR
46  };
47 
49  getToken(StartDir enum_value)
50  {
51  using namespace UT::Literal;
52  switch (enum_value) {
53  case StartDir::FROMPARM: return "fromparm"_sh;
54  case StartDir::FROMATTR: return "fromattr"_sh;
55  default: UT_ASSERT(false); return ""_sh;
56  }
57  }
58 
59  enum class LengthScale
60  {
61  NOTHING = 0,
62  SCALEBY
63  };
64 
66  getToken(LengthScale enum_value)
67  {
68  using namespace UT::Literal;
69  switch (enum_value) {
70  case LengthScale::NOTHING: return "nothing"_sh;
71  case LengthScale::SCALEBY: return "scaleby"_sh;
72  default: UT_ASSERT(false); return ""_sh;
73  }
74  }
75 
76  enum class BoundaryBehavior
77  {
78  REFLECT = 0,
79  TERMINATE
80  };
81 
84  {
85  using namespace UT::Literal;
86  switch (enum_value) {
87  case BoundaryBehavior::REFLECT: return "reflect"_sh;
88  case BoundaryBehavior::TERMINATE: return "terminate"_sh;
89  default: UT_ASSERT(false); return ""_sh;
90  }
91  }
92 
93 }
94 
95 
97 {
98 public:
99  static int version() { return 1; }
100 
102  {
103  mySrcPoints = ""_UTsh;
104  myWalkingMethod = 0;
105  myStartDir = 0;
106  myDirection = UT_Vector3D(0,1,0);
107  myDirAttrib = "dir"_UTsh;
108  myVectorFieldAttrib = "v"_UTsh;
109  myLength = 1;
110  myLengthScale = 0;
111  myLengthAttrib = "length"_UTsh;
112  myGlobalRotation = 0;
113  myFieldSymmetry = 1;
114  myUseMaxSteps = false;
115  myMaxSteps = 100;
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;
127 
128  }
129 
130  explicit SOP_WalkOnSurfaceParms(const SOP_WalkOnSurfaceParms &) = default;
132  SOP_WalkOnSurfaceParms(SOP_WalkOnSurfaceParms &&) noexcept = default;
133  SOP_WalkOnSurfaceParms &operator=(SOP_WalkOnSurfaceParms &&) noexcept = default;
134 
135  ~SOP_WalkOnSurfaceParms() override {}
136 
138  {
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;
163 
164 
165  if (baseGetSignature() != src.baseGetSignature()) return false;
166 
167  return true;
168  }
170  {
171  return !operator==(src);
172  }
177 
178 
179 
180  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
181  {
182  mySrcPoints = ""_UTsh;
183  if (true)
184  graph->evalOpParm(mySrcPoints, nodeidx, "group", time, graph->isDirect()?nullptr:depnode);
185  myWalkingMethod = 0;
186  if (true)
187  graph->evalOpParm(myWalkingMethod, nodeidx, "walkingmethod", time, graph->isDirect()?nullptr:depnode);
188  myStartDir = 0;
189  if (true && ( (true&&!(((int64(getWalkingMethod())!=0)))) ) )
190  graph->evalOpParm(myStartDir, nodeidx, "startdir", time, graph->isDirect()?nullptr:depnode);
191  myDirection = UT_Vector3D(0,1,0);
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);
200  myLength = 1;
201  if (true)
202  graph->evalOpParm(myLength, nodeidx, "length", time, graph->isDirect()?nullptr:depnode);
203  myLengthScale = 0;
204  if (true)
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;
210  if (true)
211  graph->evalOpParm(myGlobalRotation, nodeidx, "globalrotation", time, graph->isDirect()?nullptr:depnode);
212  myFieldSymmetry = 1;
213  if (true && ( (true&&!(((int64(getWalkingMethod())!=1)))) ) )
214  graph->evalOpParm(myFieldSymmetry, nodeidx, "symmetry", time, graph->isDirect()?nullptr:depnode);
215  myUseMaxSteps = false;
216  if (true)
217  graph->evalOpParm(myUseMaxSteps, nodeidx, "usemaxsteps", time, graph->isDirect()?nullptr:depnode);
218  myMaxSteps = 100;
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;
225  if (true)
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;
231  if (true)
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;
237  if (true)
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;
243  if (true)
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;
249  if (true)
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);
254 
255  }
256 
257 
258  void loadFromOpSubclass(const LoadParms &loadparms) override
259  {
260  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
261  }
262 
263 
264  void copyFrom(const OP_NodeParms *src) override
265  {
266  *this = *((const SOP_WalkOnSurfaceParms *)src);
267  }
268 
269  template <typename T>
270  void
271  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
272  {
273  if (idx.size() < 1)
274  return;
275  UT_ASSERT(idx.size() == instance.size()+1);
276  if (idx.size() != instance.size()+1)
277  return;
278  switch (idx[0])
279  {
280  case 0:
281  coerceValue(value, mySrcPoints);
282  break;
283  case 1:
284  coerceValue(value, myWalkingMethod);
285  break;
286  case 2:
287  coerceValue(value, myStartDir);
288  break;
289  case 3:
290  coerceValue(value, myDirection);
291  break;
292  case 4:
293  coerceValue(value, myDirAttrib);
294  break;
295  case 5:
296  coerceValue(value, myVectorFieldAttrib);
297  break;
298  case 6:
299  coerceValue(value, myLength);
300  break;
301  case 7:
302  coerceValue(value, myLengthScale);
303  break;
304  case 8:
305  coerceValue(value, myLengthAttrib);
306  break;
307  case 9:
308  coerceValue(value, myGlobalRotation);
309  break;
310  case 10:
311  coerceValue(value, myFieldSymmetry);
312  break;
313  case 11:
314  coerceValue(value, myUseMaxSteps);
315  break;
316  case 12:
317  coerceValue(value, myMaxSteps);
318  break;
319  case 13:
320  coerceValue(value, myBoundaryBehavior);
321  break;
322  case 14:
323  coerceValue(value, myTerminationEdges);
324  break;
325  case 15:
326  coerceValue(value, myReflectionEdges);
327  break;
328  case 16:
329  coerceValue(value, myUseOutputPrimNum);
330  break;
331  case 17:
332  coerceValue(value, myOutputPrimNum);
333  break;
334  case 18:
335  coerceValue(value, myUseOutputPrimUVW);
336  break;
337  case 19:
338  coerceValue(value, myOutputPrimUVW);
339  break;
340  case 20:
341  coerceValue(value, myUseCopyPointAttribs);
342  break;
343  case 21:
344  coerceValue(value, myCopyPointAttribs);
345  break;
346  case 22:
347  coerceValue(value, myUseOutputTangent);
348  break;
349  case 23:
350  coerceValue(value, myOutputTangent);
351  break;
352 
353  }
354  }
355 
356  bool isParmColorRamp(exint idx) const override
357  {
358  switch (idx)
359  {
360 
361  }
362  return false;
363  }
364 
365  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
366  { doGetParmValue(idx, instance, value); }
367  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
368  { doGetParmValue(idx, instance, value); }
369  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
370  { doGetParmValue(idx, instance, value); }
371  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
372  { doGetParmValue(idx, instance, value); }
373  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
374  { doGetParmValue(idx, instance, value); }
375  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
376  { doGetParmValue(idx, instance, value); }
377  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
378  { doGetParmValue(idx, instance, value); }
379  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
380  { doGetParmValue(idx, instance, value); }
381  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
382  { doGetParmValue(idx, instance, value); }
383  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
384  { doGetParmValue(idx, instance, value); }
385  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
386  { doGetParmValue(idx, instance, value); }
387 
388  template <typename T>
389  void
390  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
391  {
392  if (idx.size() < 1)
393  return;
394  UT_ASSERT(idx.size() == instance.size()+1);
395  if (idx.size() != instance.size()+1)
396  return;
397  switch (idx[0])
398  {
399  case 0:
400  coerceValue(mySrcPoints, ( ( value ) ));
401  break;
402  case 1:
403  coerceValue(myWalkingMethod, clampMinValue(0, clampMaxValue(1, value ) ));
404  break;
405  case 2:
406  coerceValue(myStartDir, clampMinValue(0, clampMaxValue(1, value ) ));
407  break;
408  case 3:
409  coerceValue(myDirection, ( ( value ) ));
410  break;
411  case 4:
412  coerceValue(myDirAttrib, ( ( value ) ));
413  break;
414  case 5:
415  coerceValue(myVectorFieldAttrib, ( ( value ) ));
416  break;
417  case 6:
418  coerceValue(myLength, ( ( value ) ));
419  break;
420  case 7:
421  coerceValue(myLengthScale, clampMinValue(0, clampMaxValue(1, value ) ));
422  break;
423  case 8:
424  coerceValue(myLengthAttrib, ( ( value ) ));
425  break;
426  case 9:
427  coerceValue(myGlobalRotation, clampMinValue(-180, clampMaxValue(180, value ) ));
428  break;
429  case 10:
430  coerceValue(myFieldSymmetry, ( clampMaxValue(8, value ) ));
431  break;
432  case 11:
433  coerceValue(myUseMaxSteps, ( ( value ) ));
434  break;
435  case 12:
436  coerceValue(myMaxSteps, clampMinValue(0, ( value ) ));
437  break;
438  case 13:
439  coerceValue(myBoundaryBehavior, clampMinValue(0, clampMaxValue(1, value ) ));
440  break;
441  case 14:
442  coerceValue(myTerminationEdges, ( ( value ) ));
443  break;
444  case 15:
445  coerceValue(myReflectionEdges, ( ( value ) ));
446  break;
447  case 16:
448  coerceValue(myUseOutputPrimNum, ( ( value ) ));
449  break;
450  case 17:
451  coerceValue(myOutputPrimNum, ( ( value ) ));
452  break;
453  case 18:
454  coerceValue(myUseOutputPrimUVW, ( ( value ) ));
455  break;
456  case 19:
457  coerceValue(myOutputPrimUVW, ( ( value ) ));
458  break;
459  case 20:
460  coerceValue(myUseCopyPointAttribs, ( ( value ) ));
461  break;
462  case 21:
463  coerceValue(myCopyPointAttribs, ( ( value ) ));
464  break;
465  case 22:
466  coerceValue(myUseOutputTangent, ( ( value ) ));
467  break;
468  case 23:
469  coerceValue(myOutputTangent, ( ( value ) ));
470  break;
471 
472  }
473  }
474 
475  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
476  { doSetParmValue(idx, instance, value); }
477  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
478  { doSetParmValue(idx, instance, value); }
479  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
480  { doSetParmValue(idx, instance, value); }
481  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
482  { doSetParmValue(idx, instance, value); }
483  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
484  { doSetParmValue(idx, instance, value); }
485  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
486  { doSetParmValue(idx, instance, value); }
487  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
488  { doSetParmValue(idx, instance, value); }
489  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
490  { doSetParmValue(idx, instance, value); }
491  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
492  { doSetParmValue(idx, instance, value); }
493  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
494  { doSetParmValue(idx, instance, value); }
495  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
496  { doSetParmValue(idx, instance, value); }
497 
498  exint getNestNumParms(TempIndex idx) const override
499  {
500  if (idx.size() == 0)
501  return 24;
502  switch (idx[0])
503  {
504 
505  }
506  // Invalid
507  return 0;
508  }
509 
510  const char *getNestParmName(TempIndex fieldnum) const override
511  {
512  if (fieldnum.size() < 1)
513  return 0;
514  switch (fieldnum[0])
515  {
516  case 0:
517  return "group";
518  case 1:
519  return "walkingmethod";
520  case 2:
521  return "startdir";
522  case 3:
523  return "dir";
524  case 4:
525  return "dirattrib";
526  case 5:
527  return "fieldattrib";
528  case 6:
529  return "length";
530  case 7:
531  return "lenscale";
532  case 8:
533  return "lenattrib";
534  case 9:
535  return "globalrotation";
536  case 10:
537  return "symmetry";
538  case 11:
539  return "usemaxsteps";
540  case 12:
541  return "maxsteps";
542  case 13:
543  return "defaultbehavior";
544  case 14:
545  return "terminationedges";
546  case 15:
547  return "reflectionedges";
548  case 16:
549  return "useoutputprimnum";
550  case 17:
551  return "outputprimnum";
552  case 18:
553  return "useoutputprimuvw";
554  case 19:
555  return "outputprimuvw";
556  case 20:
557  return "usecopypointattribs";
558  case 21:
559  return "copypointattribs";
560  case 22:
561  return "useoutputtangent";
562  case 23:
563  return "outputtangent";
564 
565  }
566  return 0;
567  }
568 
569  ParmType getNestParmType(TempIndex fieldnum) const override
570  {
571  if (fieldnum.size() < 1)
572  return PARM_UNSUPPORTED;
573  switch (fieldnum[0])
574  {
575  case 0:
576  return PARM_STRING;
577  case 1:
578  return PARM_INTEGER;
579  case 2:
580  return PARM_INTEGER;
581  case 3:
582  return PARM_VECTOR3;
583  case 4:
584  return PARM_STRING;
585  case 5:
586  return PARM_STRING;
587  case 6:
588  return PARM_FLOAT;
589  case 7:
590  return PARM_INTEGER;
591  case 8:
592  return PARM_STRING;
593  case 9:
594  return PARM_FLOAT;
595  case 10:
596  return PARM_INTEGER;
597  case 11:
598  return PARM_INTEGER;
599  case 12:
600  return PARM_INTEGER;
601  case 13:
602  return PARM_INTEGER;
603  case 14:
604  return PARM_STRING;
605  case 15:
606  return PARM_STRING;
607  case 16:
608  return PARM_INTEGER;
609  case 17:
610  return PARM_STRING;
611  case 18:
612  return PARM_INTEGER;
613  case 19:
614  return PARM_STRING;
615  case 20:
616  return PARM_INTEGER;
617  case 21:
618  return PARM_STRING;
619  case 22:
620  return PARM_INTEGER;
621  case 23:
622  return PARM_STRING;
623 
624  }
625  return PARM_UNSUPPORTED;
626  }
627 
628  // Boiler plate to load individual types.
629  static void loadData(UT_IStream &is, int64 &v)
630  { is.bread(&v, 1); }
631  static void loadData(UT_IStream &is, bool &v)
632  { int64 iv; is.bread(&iv, 1); v = iv; }
633  static void loadData(UT_IStream &is, fpreal64 &v)
634  { is.bread<fpreal64>(&v, 1); }
635  static void loadData(UT_IStream &is, UT_Vector2D &v)
636  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
637  static void loadData(UT_IStream &is, UT_Vector3D &v)
638  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
639  is.bread<fpreal64>(&v.z(), 1); }
640  static void loadData(UT_IStream &is, UT_Vector4D &v)
641  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
642  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
643  static void loadData(UT_IStream &is, UT_Matrix2D &v)
644  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
645  static void loadData(UT_IStream &is, UT_Matrix3D &v)
646  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
647  static void loadData(UT_IStream &is, UT_Matrix4D &v)
648  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
649  static void loadData(UT_IStream &is, UT_Vector2I &v)
650  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
651  static void loadData(UT_IStream &is, UT_Vector3I &v)
652  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
653  is.bread<int64>(&v.z(), 1); }
654  static void loadData(UT_IStream &is, UT_Vector4I &v)
655  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
656  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
658  { is.bread(v); }
660  { UT_StringHolder rampdata;
661  loadData(is, rampdata);
662  if (rampdata.isstring())
663  {
664  v.reset(new UT_Ramp());
665  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
666  v->load(istr);
667  }
668  else v.reset();
669  }
672  loadData(is, data);
673  if (data.isstring())
674  {
675  // Find the data type.
676  const char *colon = UT_StringWrap(data).findChar(':');
677  if (colon)
678  {
679  int typelen = colon - data.buffer();
681  type.strncpy(data.buffer(), typelen);
682  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
683 
684  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
685  }
686  }
687  else v.reset();
688  }
689 
690  static void saveData(std::ostream &os, int64 v)
691  { UTwrite(os, &v); }
692  static void saveData(std::ostream &os, bool v)
693  { int64 iv = v; UTwrite(os, &iv); }
694  static void saveData(std::ostream &os, fpreal64 v)
695  { UTwrite<fpreal64>(os, &v); }
696  static void saveData(std::ostream &os, UT_Vector2D v)
697  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
698  static void saveData(std::ostream &os, UT_Vector3D v)
699  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
700  UTwrite<fpreal64>(os, &v.z()); }
701  static void saveData(std::ostream &os, UT_Vector4D v)
702  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
703  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
704  static void saveData(std::ostream &os, UT_Matrix2D v)
706  static void saveData(std::ostream &os, UT_Matrix3D v)
708  static void saveData(std::ostream &os, UT_Matrix4D v)
710  static void saveData(std::ostream &os, UT_StringHolder s)
711  { UT_StringWrap(s).saveBinary(os); }
712  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
714  UT_OStringStream ostr;
715  if (s) s->save(ostr);
716  result = ostr.str();
717  saveData(os, result);
718  }
719  static void saveData(std::ostream &os, PRM_DataItemHandle s)
721  UT_OStringStream ostr;
722  if (s)
723  {
724  ostr << s->getDataTypeToken();
725  ostr << ":";
726  s->saveBinary(ostr);
727  }
728  result = ostr.str();
729  saveData(os, result);
730  }
731 
732 
733  void save(std::ostream &os) const
734  {
735  int32 v = version();
736  UTwrite(os, &v);
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);
761 
762  }
763 
764  bool load(UT_IStream &is)
765  {
766  int32 v;
767  is.bread(&v, 1);
768  if (version() != v)
769  {
770  // Fail incompatible versions
771  return false;
772  }
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);
797 
798  return true;
799  }
800 
801  const UT_StringHolder & getSrcPoints() const { return mySrcPoints; }
802  void setSrcPoints(const UT_StringHolder & val) { mySrcPoints = val; }
804  {
805  SOP_Node *thissop = cookparms.getNode();
806  if (!thissop) return getSrcPoints();
808  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
809  return result;
810  }
811  WalkingMethod getWalkingMethod() const { return WalkingMethod(myWalkingMethod); }
812  void setWalkingMethod(WalkingMethod val) { myWalkingMethod = int64(val); }
814  {
815  SOP_Node *thissop = cookparms.getNode();
816  if (!thissop) return getWalkingMethod();
817  int64 result;
818  OP_Utils::evalOpParm(result, thissop, "walkingmethod", cookparms.getCookTime(), 0);
819  return WalkingMethod(result);
820  }
821  StartDir getStartDir() const { return StartDir(myStartDir); }
822  void setStartDir(StartDir val) { myStartDir = int64(val); }
824  {
825  SOP_Node *thissop = cookparms.getNode();
826  if (!thissop) return getStartDir();
827  int64 result;
828  OP_Utils::evalOpParm(result, thissop, "startdir", cookparms.getCookTime(), 0);
829  return StartDir(result);
830  }
831  UT_Vector3D getDirection() const { return myDirection; }
832  void setDirection(UT_Vector3D val) { myDirection = val; }
834  {
835  SOP_Node *thissop = cookparms.getNode();
836  if (!thissop) return getDirection();
838  OP_Utils::evalOpParm(result, thissop, "dir", cookparms.getCookTime(), 0);
839  return result;
840  }
841  const UT_StringHolder & getDirAttrib() const { return myDirAttrib; }
842  void setDirAttrib(const UT_StringHolder & val) { myDirAttrib = val; }
844  {
845  SOP_Node *thissop = cookparms.getNode();
846  if (!thissop) return getDirAttrib();
848  OP_Utils::evalOpParm(result, thissop, "dirattrib", cookparms.getCookTime(), 0);
849  return result;
850  }
851  const UT_StringHolder & getVectorFieldAttrib() const { return myVectorFieldAttrib; }
852  void setVectorFieldAttrib(const UT_StringHolder & val) { myVectorFieldAttrib = val; }
854  {
855  SOP_Node *thissop = cookparms.getNode();
856  if (!thissop) return getVectorFieldAttrib();
858  OP_Utils::evalOpParm(result, thissop, "fieldattrib", cookparms.getCookTime(), 0);
859  return result;
860  }
861  fpreal64 getLength() const { return myLength; }
862  void setLength(fpreal64 val) { myLength = val; }
863  fpreal64 opLength(const SOP_NodeVerb::CookParms &cookparms) const
864  {
865  SOP_Node *thissop = cookparms.getNode();
866  if (!thissop) return getLength();
868  OP_Utils::evalOpParm(result, thissop, "length", cookparms.getCookTime(), 0);
869  return result;
870  }
871  LengthScale getLengthScale() const { return LengthScale(myLengthScale); }
872  void setLengthScale(LengthScale val) { myLengthScale = int64(val); }
874  {
875  SOP_Node *thissop = cookparms.getNode();
876  if (!thissop) return getLengthScale();
877  int64 result;
878  OP_Utils::evalOpParm(result, thissop, "lenscale", cookparms.getCookTime(), 0);
879  return LengthScale(result);
880  }
881  const UT_StringHolder & getLengthAttrib() const { return myLengthAttrib; }
882  void setLengthAttrib(const UT_StringHolder & val) { myLengthAttrib = val; }
884  {
885  SOP_Node *thissop = cookparms.getNode();
886  if (!thissop) return getLengthAttrib();
888  OP_Utils::evalOpParm(result, thissop, "lenattrib", cookparms.getCookTime(), 0);
889  return result;
890  }
891  fpreal64 getGlobalRotation() const { return myGlobalRotation; }
892  void setGlobalRotation(fpreal64 val) { myGlobalRotation = val; }
894  {
895  SOP_Node *thissop = cookparms.getNode();
896  if (!thissop) return getGlobalRotation();
898  OP_Utils::evalOpParm(result, thissop, "globalrotation", cookparms.getCookTime(), 0);
899  return result;
900  }
901  int64 getFieldSymmetry() const { return myFieldSymmetry; }
902  void setFieldSymmetry(int64 val) { myFieldSymmetry = val; }
904  {
905  SOP_Node *thissop = cookparms.getNode();
906  if (!thissop) return getFieldSymmetry();
907  int64 result;
908  OP_Utils::evalOpParm(result, thissop, "symmetry", cookparms.getCookTime(), 0);
909  return result;
910  }
911  bool getUseMaxSteps() const { return myUseMaxSteps; }
912  void setUseMaxSteps(bool val) { myUseMaxSteps = val; }
913  bool opUseMaxSteps(const SOP_NodeVerb::CookParms &cookparms) const
914  {
915  SOP_Node *thissop = cookparms.getNode();
916  if (!thissop) return getUseMaxSteps();
917  bool result;
918  OP_Utils::evalOpParm(result, thissop, "usemaxsteps", cookparms.getCookTime(), 0);
919  return result;
920  }
921  int64 getMaxSteps() const { return myMaxSteps; }
922  void setMaxSteps(int64 val) { myMaxSteps = val; }
923  int64 opMaxSteps(const SOP_NodeVerb::CookParms &cookparms) const
924  {
925  SOP_Node *thissop = cookparms.getNode();
926  if (!thissop) return getMaxSteps();
927  int64 result;
928  OP_Utils::evalOpParm(result, thissop, "maxsteps", cookparms.getCookTime(), 0);
929  return result;
930  }
931  BoundaryBehavior getBoundaryBehavior() const { return BoundaryBehavior(myBoundaryBehavior); }
932  void setBoundaryBehavior(BoundaryBehavior val) { myBoundaryBehavior = int64(val); }
934  {
935  SOP_Node *thissop = cookparms.getNode();
936  if (!thissop) return getBoundaryBehavior();
937  int64 result;
938  OP_Utils::evalOpParm(result, thissop, "defaultbehavior", cookparms.getCookTime(), 0);
939  return BoundaryBehavior(result);
940  }
941  const UT_StringHolder & getTerminationEdges() const { return myTerminationEdges; }
942  void setTerminationEdges(const UT_StringHolder & val) { myTerminationEdges = val; }
944  {
945  SOP_Node *thissop = cookparms.getNode();
946  if (!thissop) return getTerminationEdges();
948  OP_Utils::evalOpParm(result, thissop, "terminationedges", cookparms.getCookTime(), 0);
949  return result;
950  }
951  const UT_StringHolder & getReflectionEdges() const { return myReflectionEdges; }
952  void setReflectionEdges(const UT_StringHolder & val) { myReflectionEdges = val; }
954  {
955  SOP_Node *thissop = cookparms.getNode();
956  if (!thissop) return getReflectionEdges();
958  OP_Utils::evalOpParm(result, thissop, "reflectionedges", cookparms.getCookTime(), 0);
959  return result;
960  }
961  bool getUseOutputPrimNum() const { return myUseOutputPrimNum; }
962  void setUseOutputPrimNum(bool val) { myUseOutputPrimNum = val; }
963  bool opUseOutputPrimNum(const SOP_NodeVerb::CookParms &cookparms) const
964  {
965  SOP_Node *thissop = cookparms.getNode();
966  if (!thissop) return getUseOutputPrimNum();
967  bool result;
968  OP_Utils::evalOpParm(result, thissop, "useoutputprimnum", cookparms.getCookTime(), 0);
969  return result;
970  }
971  const UT_StringHolder & getOutputPrimNum() const { return myOutputPrimNum; }
972  void setOutputPrimNum(const UT_StringHolder & val) { myOutputPrimNum = val; }
974  {
975  SOP_Node *thissop = cookparms.getNode();
976  if (!thissop) return getOutputPrimNum();
978  OP_Utils::evalOpParm(result, thissop, "outputprimnum", cookparms.getCookTime(), 0);
979  return result;
980  }
981  bool getUseOutputPrimUVW() const { return myUseOutputPrimUVW; }
982  void setUseOutputPrimUVW(bool val) { myUseOutputPrimUVW = val; }
983  bool opUseOutputPrimUVW(const SOP_NodeVerb::CookParms &cookparms) const
984  {
985  SOP_Node *thissop = cookparms.getNode();
986  if (!thissop) return getUseOutputPrimUVW();
987  bool result;
988  OP_Utils::evalOpParm(result, thissop, "useoutputprimuvw", cookparms.getCookTime(), 0);
989  return result;
990  }
991  const UT_StringHolder & getOutputPrimUVW() const { return myOutputPrimUVW; }
992  void setOutputPrimUVW(const UT_StringHolder & val) { myOutputPrimUVW = val; }
994  {
995  SOP_Node *thissop = cookparms.getNode();
996  if (!thissop) return getOutputPrimUVW();
998  OP_Utils::evalOpParm(result, thissop, "outputprimuvw", cookparms.getCookTime(), 0);
999  return result;
1000  }
1001  bool getUseCopyPointAttribs() const { return myUseCopyPointAttribs; }
1002  void setUseCopyPointAttribs(bool val) { myUseCopyPointAttribs = val; }
1003  bool opUseCopyPointAttribs(const SOP_NodeVerb::CookParms &cookparms) const
1004  {
1005  SOP_Node *thissop = cookparms.getNode();
1006  if (!thissop) return getUseCopyPointAttribs();
1007  bool result;
1008  OP_Utils::evalOpParm(result, thissop, "usecopypointattribs", cookparms.getCookTime(), 0);
1009  return result;
1010  }
1011  const UT_StringHolder & getCopyPointAttribs() const { return myCopyPointAttribs; }
1012  void setCopyPointAttribs(const UT_StringHolder & val) { myCopyPointAttribs = val; }
1014  {
1015  SOP_Node *thissop = cookparms.getNode();
1016  if (!thissop) return getCopyPointAttribs();
1018  OP_Utils::evalOpParm(result, thissop, "copypointattribs", cookparms.getCookTime(), 0);
1019  return result;
1020  }
1021  bool getUseOutputTangent() const { return myUseOutputTangent; }
1022  void setUseOutputTangent(bool val) { myUseOutputTangent = val; }
1023  bool opUseOutputTangent(const SOP_NodeVerb::CookParms &cookparms) const
1024  {
1025  SOP_Node *thissop = cookparms.getNode();
1026  if (!thissop) return getUseOutputTangent();
1027  bool result;
1028  OP_Utils::evalOpParm(result, thissop, "useoutputtangent", cookparms.getCookTime(), 0);
1029  return result;
1030  }
1031  const UT_StringHolder & getOutputTangent() const { return myOutputTangent; }
1032  void setOutputTangent(const UT_StringHolder & val) { myOutputTangent = val; }
1034  {
1035  SOP_Node *thissop = cookparms.getNode();
1036  if (!thissop) return getOutputTangent();
1038  OP_Utils::evalOpParm(result, thissop, "outputtangent", cookparms.getCookTime(), 0);
1039  return result;
1040  }
1041 
1042 private:
1043  UT_StringHolder mySrcPoints;
1044  int64 myWalkingMethod;
1045  int64 myStartDir;
1046  UT_Vector3D myDirection;
1047  UT_StringHolder myDirAttrib;
1048  UT_StringHolder myVectorFieldAttrib;
1049  fpreal64 myLength;
1050  int64 myLengthScale;
1051  UT_StringHolder myLengthAttrib;
1052  fpreal64 myGlobalRotation;
1053  int64 myFieldSymmetry;
1054  bool myUseMaxSteps;
1055  int64 myMaxSteps;
1056  int64 myBoundaryBehavior;
1057  UT_StringHolder myTerminationEdges;
1058  UT_StringHolder myReflectionEdges;
1059  bool myUseOutputPrimNum;
1060  UT_StringHolder myOutputPrimNum;
1061  bool myUseOutputPrimUVW;
1062  UT_StringHolder myOutputPrimUVW;
1063  bool myUseCopyPointAttribs;
1064  UT_StringHolder myCopyPointAttribs;
1065  bool myUseOutputTangent;
1066  UT_StringHolder myOutputTangent;
1067 
1068 };
type
Definition: core.h:556
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)
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:403
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
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
GLboolean * data
Definition: glcorearb.h:131
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void setLengthAttrib(const UT_StringHolder &val)
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:495
fpreal64 getGlobalRotation() const
const GLdouble * v
Definition: glcorearb.h:837
fpreal getTime() const
Definition: OP_Context.h:63
UT_StringHolder opOutputTangent(const SOP_NodeVerb::CookParms &cookparms) const
GLsizei const GLfloat * value
Definition: glcorearb.h:824
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
Definition: OP_NodeParms.h:105
static void loadData(UT_IStream &is, UT_Vector3D &v)
void setDirAttrib(const UT_StringHolder &val)
UT_StringHolder opVectorFieldAttrib(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:669
int64 exint
Definition: SYS_Types.h:125
void setTerminationEdges(const UT_StringHolder &val)
SYS_FORCE_INLINE const char * buffer() const
void setOutputTangent(const UT_StringHolder &val)
GLdouble s
Definition: glad.h:3009
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
**But if you need a result
Definition: thread.h:622
void save(std::ostream &os) const
LengthScale getLengthScale() const
exint nodeIdx() const
Definition: OP_NodeParms.h:103
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
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:493
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)
double fpreal64
Definition: SYS_Types.h:201
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: APEX_Include.h:55
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:426
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
bool opUseOutputPrimUVW(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector3I &v)
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
const UT_StringHolder & getDirAttrib() const
exint length() 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.
Definition: UT_SharedPtr.h:36
void setBoundaryBehavior(BoundaryBehavior val)
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:497
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:102
bool operator!=(const SOP_WalkOnSurfaceParms &src) const
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
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
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
long long int64
Definition: SYS_Types.h:116
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.
Definition: UT_String.h:306
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)
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
fpreal64 fpreal
Definition: SYS_Types.h:283
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:107
LeafData & operator=(const LeafData &)=delete
bool opUseOutputTangent(const SOP_NodeVerb::CookParms &cookparms) const
Utility class for containing a color ramp.
Definition: UT_Ramp.h:96
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:499
void setSrcPoints(const UT_StringHolder &val)
GLuint GLfloat * val
Definition: glcorearb.h:1608
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:302
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
WalkingMethod opWalkingMethod(const SOP_NodeVerb::CookParms &cookparms) const
#define SOP_API
Definition: SOP_API.h:10
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
Definition: SOP_NodeVerb.h:432
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
Definition: UT_String.h:1421
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:165
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
GLboolean r
Definition: glcorearb.h:1222
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
Definition: UT_Vector3.h:667
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)
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
Definition: UT_Vector2.h:428
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)
GLenum src
Definition: glcorearb.h:1793
void setCopyPointAttribs(const UT_StringHolder &val)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:665