HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_Tetrahedralize-2.0.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 <SOP/SOP_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_Tetrahedralize_2_0Enums
24 {
25  enum class Batch
26  {
27  ENTIRE = 0,
28  CONNECTED,
29  ATTRIB
30  };
31 
33  getToken(Batch enum_value)
34  {
35  using namespace UT::Literal;
36  switch (enum_value) {
37  case Batch::ENTIRE: return "entire"_sh;
38  case Batch::CONNECTED: return "connected"_sh;
39  case Batch::ATTRIB: return "attrib"_sh;
40  default: UT_ASSERT(false); return ""_sh;
41  }
42  }
43 
44  enum class Mode
45  {
46  CONFORM = 0,
47  REFINE,
48  CONVEXHULL,
49  DETECT
50  };
51 
53  getToken(Mode enum_value)
54  {
55  using namespace UT::Literal;
56  switch (enum_value) {
57  case Mode::CONFORM: return "conform"_sh;
58  case Mode::REFINE: return "refine"_sh;
59  case Mode::CONVEXHULL: return "convexhull"_sh;
60  case Mode::DETECT: return "detect"_sh;
61  default: UT_ASSERT(false); return ""_sh;
62  }
63  }
64 
65  enum class Output
66  {
67  POLYLINE = 0,
68  TETRAHEDRA,
69  POLYGONS,
70  POLYTET
71  };
72 
74  getToken(Output enum_value)
75  {
76  using namespace UT::Literal;
77  switch (enum_value) {
78  case Output::POLYLINE: return "polyline"_sh;
79  case Output::TETRAHEDRA: return "tetrahedra"_sh;
80  case Output::POLYGONS: return "polygons"_sh;
81  case Output::POLYTET: return "polytet"_sh;
82  default: UT_ASSERT(false); return ""_sh;
83  }
84  }
85 
86  enum class Failures
87  {
88  REMOVEFAILED = 0,
89  KEEPFAILED,
91  };
92 
94  getToken(Failures enum_value)
95  {
96  using namespace UT::Literal;
97  switch (enum_value) {
98  case Failures::REMOVEFAILED: return "removefailed"_sh;
99  case Failures::KEEPFAILED: return "keepfailed"_sh;
100  case Failures::FAILONERROR: return "failonerror"_sh;
101  default: UT_ASSERT(false); return ""_sh;
102  }
103  }
104 
105 }
106 
107 
109 {
110 public:
111  static int version() { return 1; }
112 
114  {
115  myGroup = ""_UTsh;
116  myBatch = 0;
117  myPieceAttrib = "name"_UTsh;
118  myRemove = true;
119  myMode = 0;
120  myOutput = 1;
121  myKeepPrims = false;
122  myNoBoundMod = true;
123  myOneFacePerTet = false;
124  myPropNormal = true;
125  myInternAttrib = true;
126  myUseQuality = true;
127  myRadEdgeTol = 1.5;
128  myMinDihedralAngle = 10;
129  myUseTargetSizeAttrib = false;
130  myTargetSizeAttrib = "target_size"_UTsh;
131  myUseUniformMaxSize = false;
132  myUniformMaxSize = 0.1;
133  myUseMaxSizeAttrib = false;
134  myMaxSizeAttrib = "max_size"_UTsh;
135  myUseMaxIter = false;
136  myMaxIter = 100000;
137  myUseMaxSteiner = false;
138  myMaxSteiner = 1000;
139  myOptIterations = 2;
140  myOptEdgeFace = true;
141  myOptVtxSmooth = true;
142  myOptVtxMod = true;
143  myUseIsectColor = true;
144  myIsectPolyClr = UT_Vector3D(0.9,0,0);
145  myUseIsectGrp = true;
146  myIsectPolyGrp = "intersecting_polygon_grp"_UTsh;
147  myFailures = 0;
148  myRandomSeed = 3;
149  myPrecisionTol = 1e-09;
150  myDihedralAngleTol = 1e-05;
151  myMaxAttempts = 5;
152  myUseInvalidColor = true;
153  myInvalidPrimClr = UT_Vector3D(0.2,0,0);
154  myUseInvalidGrp = true;
155  myInvalidPrimGrp = "invalid_prim_grp"_UTsh;
156 
157  }
158 
159  explicit SOP_Tetrahedralize_2_0Parms(const SOP_Tetrahedralize_2_0Parms &) = default;
162  SOP_Tetrahedralize_2_0Parms &operator=(SOP_Tetrahedralize_2_0Parms &&) noexcept = default;
163 
165 
167  {
168  if (myGroup != src.myGroup) return false;
169  if (myBatch != src.myBatch) return false;
170  if (myPieceAttrib != src.myPieceAttrib) return false;
171  if (myRemove != src.myRemove) return false;
172  if (myMode != src.myMode) return false;
173  if (myOutput != src.myOutput) return false;
174  if (myKeepPrims != src.myKeepPrims) return false;
175  if (myNoBoundMod != src.myNoBoundMod) return false;
176  if (myOneFacePerTet != src.myOneFacePerTet) return false;
177  if (myPropNormal != src.myPropNormal) return false;
178  if (myInternAttrib != src.myInternAttrib) return false;
179  if (myUseQuality != src.myUseQuality) return false;
180  if (myRadEdgeTol != src.myRadEdgeTol) return false;
181  if (myMinDihedralAngle != src.myMinDihedralAngle) return false;
182  if (myUseTargetSizeAttrib != src.myUseTargetSizeAttrib) return false;
183  if (myTargetSizeAttrib != src.myTargetSizeAttrib) return false;
184  if (myUseUniformMaxSize != src.myUseUniformMaxSize) return false;
185  if (myUniformMaxSize != src.myUniformMaxSize) return false;
186  if (myUseMaxSizeAttrib != src.myUseMaxSizeAttrib) return false;
187  if (myMaxSizeAttrib != src.myMaxSizeAttrib) return false;
188  if (myUseMaxIter != src.myUseMaxIter) return false;
189  if (myMaxIter != src.myMaxIter) return false;
190  if (myUseMaxSteiner != src.myUseMaxSteiner) return false;
191  if (myMaxSteiner != src.myMaxSteiner) return false;
192  if (myOptIterations != src.myOptIterations) return false;
193  if (myOptEdgeFace != src.myOptEdgeFace) return false;
194  if (myOptVtxSmooth != src.myOptVtxSmooth) return false;
195  if (myOptVtxMod != src.myOptVtxMod) return false;
196  if (myUseIsectColor != src.myUseIsectColor) return false;
197  if (myIsectPolyClr != src.myIsectPolyClr) return false;
198  if (myUseIsectGrp != src.myUseIsectGrp) return false;
199  if (myIsectPolyGrp != src.myIsectPolyGrp) return false;
200  if (myFailures != src.myFailures) return false;
201  if (myRandomSeed != src.myRandomSeed) return false;
202  if (myPrecisionTol != src.myPrecisionTol) return false;
203  if (myDihedralAngleTol != src.myDihedralAngleTol) return false;
204  if (myMaxAttempts != src.myMaxAttempts) return false;
205  if (myUseInvalidColor != src.myUseInvalidColor) return false;
206  if (myInvalidPrimClr != src.myInvalidPrimClr) return false;
207  if (myUseInvalidGrp != src.myUseInvalidGrp) return false;
208  if (myInvalidPrimGrp != src.myInvalidPrimGrp) return false;
209 
210  return true;
211  }
213  {
214  return !operator==(src);
215  }
220 
221 
222 
223  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
224  {
225  myGroup = ""_UTsh;
226  if (true)
227  graph->evalOpParm(myGroup, nodeidx, "group", time, 0);
228  myBatch = 0;
229  if (true)
230  graph->evalOpParm(myBatch, nodeidx, "batch", time, 0);
231  myPieceAttrib = "name"_UTsh;
232  if (true && ( (true&&!(((int64(getBatch())==0)))) ) )
233  graph->evalOpParm(myPieceAttrib, nodeidx, "pieceattrib", time, 0);
234  myRemove = true;
235  if (true)
236  graph->evalOpParm(myRemove, nodeidx, "remove", time, 0);
237  myMode = 0;
238  if (true)
239  graph->evalOpParm(myMode, nodeidx, "mode", time, 0);
240  myOutput = 1;
241  if (true && ( (true&&!(((int64(getMode())==3)))) ) )
242  graph->evalOpParm(myOutput, nodeidx, "output", time, 0);
243  myKeepPrims = false;
244  if (true && ( (true&&!(((int64(getMode())==3)))) ) )
245  graph->evalOpParm(myKeepPrims, nodeidx, "keepprims", time, 0);
246  myNoBoundMod = true;
247  if (true && ( (true&&!(((int64(getMode())==2))||((int64(getMode())==3)))) ) )
248  graph->evalOpParm(myNoBoundMod, nodeidx, "noboundmod", time, 0);
249  myOneFacePerTet = false;
250  if (true && ( (true&&!(((int64(getMode())!=0))||((int64(getOutput())==0))||((int64(getOutput())==2)))) ) )
251  graph->evalOpParm(myOneFacePerTet, nodeidx, "onefacepertet", time, 0);
252  myPropNormal = true;
253  if (true && ( (true&&!(((int64(getMode())!=0))||((int64(getOutput())==0))||((int64(getOutput())==2)))) ) )
254  graph->evalOpParm(myPropNormal, nodeidx, "propnormal", time, 0);
255  myInternAttrib = true;
256  if (true && ( (true&&!(((int64(getMode())!=0))||((int64(getOutput())==0))||((int64(getOutput())==2)))) ) )
257  graph->evalOpParm(myInternAttrib, nodeidx, "internattrib", time, 0);
258  myUseQuality = true;
259  if (true && ( (true&&!(((int64(getMode())==2))||((int64(getMode())==3)))) ) )
260  graph->evalOpParm(myUseQuality, nodeidx, "usequality", time, 0);
261  myRadEdgeTol = 1.5;
262  if (true && ( (true&&!(((int64(getMode())==2))||((int64(getMode())==3))||((getUseQuality()==0)))) ) )
263  graph->evalOpParm(myRadEdgeTol, nodeidx, "radedgetol", time, 0);
264  myMinDihedralAngle = 10;
265  if (true && ( (true&&!(((int64(getMode())==2))||((int64(getMode())==3))||((getUseQuality()==0)))) ) )
266  graph->evalOpParm(myMinDihedralAngle, nodeidx, "mindihedralang", time, 0);
267  myUseTargetSizeAttrib = false;
268  if (true && ( (true&&!(((int64(getMode())==2))||((int64(getMode())==3))||((getUseQuality()==0)))) ) )
269  graph->evalOpParm(myUseTargetSizeAttrib, nodeidx, "usetargetsizeattrib", time, 0);
270  myTargetSizeAttrib = "target_size"_UTsh;
271  if (true && ( (true&&!(((int64(getMode())==2))||((int64(getMode())==3))||((getUseQuality()==0))||((getUseTargetSizeAttrib()==0)))) ) )
272  graph->evalOpParm(myTargetSizeAttrib, nodeidx, "targetsizeattrib", time, 0);
273  myUseUniformMaxSize = false;
274  if (true && ( (true&&!(((int64(getMode())==2))||((int64(getMode())==3))||((getUseQuality()==0)))) ) )
275  graph->evalOpParm(myUseUniformMaxSize, nodeidx, "useuniformmaxsize", time, 0);
276  myUniformMaxSize = 0.1;
277  if (true && ( (true&&!(((int64(getMode())==2))||((int64(getMode())==3))||((getUseQuality()==0))||((getUseUniformMaxSize()==0)))) ) )
278  graph->evalOpParm(myUniformMaxSize, nodeidx, "uniformmaxsize", time, 0);
279  myUseMaxSizeAttrib = false;
280  if (true && ( (true&&!(((int64(getMode())==2))||((int64(getMode())==3))||((getUseQuality()==0))||((int64(getMode())!=1)))) ) )
281  graph->evalOpParm(myUseMaxSizeAttrib, nodeidx, "usemaxsizeattrib", time, 0);
282  myMaxSizeAttrib = "max_size"_UTsh;
283  if (true && ( (true&&!(((int64(getMode())==2))||((int64(getMode())==3))||((getUseQuality()==0))||((getUseMaxSizeAttrib()==0))||((int64(getMode())!=1)))) ) )
284  graph->evalOpParm(myMaxSizeAttrib, nodeidx, "maxsizeattrib", time, 0);
285  myUseMaxIter = false;
286  if (true && ( (true&&!(((int64(getMode())==2))||((int64(getMode())==3))||((getUseQuality()==0)))) ) )
287  graph->evalOpParm(myUseMaxIter, nodeidx, "usemaxiter", time, 0);
288  myMaxIter = 100000;
289  if (true && ( (true&&!(((int64(getMode())==2))||((int64(getMode())==3))||((getUseQuality()==0))||((getUseMaxIter()==0)))) ) )
290  graph->evalOpParm(myMaxIter, nodeidx, "maxiter", time, 0);
291  myUseMaxSteiner = false;
292  if (true && ( (true&&!(((int64(getMode())==2))||((int64(getMode())==3))||((getUseQuality()==0)))) ) )
293  graph->evalOpParm(myUseMaxSteiner, nodeidx, "usemaxsteiner", time, 0);
294  myMaxSteiner = 1000;
295  if (true && ( (true&&!(((int64(getMode())==2))||((int64(getMode())==3))||((getUseQuality()==0))||((getUseMaxSteiner()==0)))) ) )
296  graph->evalOpParm(myMaxSteiner, nodeidx, "maxsteiner", time, 0);
297  myOptIterations = 2;
298  if (true && ( (true&&!(((int64(getMode())==2))||((int64(getMode())==3)))) ) )
299  graph->evalOpParm(myOptIterations, nodeidx, "optiterations", time, 0);
300  myOptEdgeFace = true;
301  if (true && ( (true&&!(((int64(getMode())==2))||((int64(getMode())==3)))) ) )
302  graph->evalOpParm(myOptEdgeFace, nodeidx, "optedgeface", time, 0);
303  myOptVtxSmooth = true;
304  if (true && ( (true&&!(((int64(getMode())==2))||((int64(getMode())==3)))) ) )
305  graph->evalOpParm(myOptVtxSmooth, nodeidx, "optvtxsmooth", time, 0);
306  myOptVtxMod = true;
307  if (true && ( (true&&!(((int64(getMode())==2))||((int64(getMode())==3)))) ) )
308  graph->evalOpParm(myOptVtxMod, nodeidx, "optvtxmod", time, 0);
309  myUseIsectColor = true;
310  if (true && ( (true&&!(((int64(getMode())!=3)))) ) )
311  graph->evalOpParm(myUseIsectColor, nodeidx, "useisectcolor", time, 0);
312  myIsectPolyClr = UT_Vector3D(0.9,0,0);
313  if (true && ( (true&&!(((getUseIsectColor()==0))||((int64(getMode())!=3)))) ) )
314  graph->evalOpParm(myIsectPolyClr, nodeidx, "isectpolyclr", time, 0);
315  myUseIsectGrp = true;
316  if (true && ( (true&&!(((int64(getMode())!=3)))) ) )
317  graph->evalOpParm(myUseIsectGrp, nodeidx, "useisectgrp", time, 0);
318  myIsectPolyGrp = "intersecting_polygon_grp"_UTsh;
319  if (true && ( (true&&!(((getUseIsectGrp()==0))||((int64(getMode())!=3)))) ) )
320  graph->evalOpParm(myIsectPolyGrp, nodeidx, "isectpolygrp", time, 0);
321  myFailures = 0;
322  if (true)
323  graph->evalOpParm(myFailures, nodeidx, "failures", time, 0);
324  myRandomSeed = 3;
325  if (true)
326  graph->evalOpParm(myRandomSeed, nodeidx, "randomseed", time, 0);
327  myPrecisionTol = 1e-09;
328  if (true)
329  graph->evalOpParm(myPrecisionTol, nodeidx, "precisiontol", time, 0);
330  myDihedralAngleTol = 1e-05;
331  if (true)
332  graph->evalOpParm(myDihedralAngleTol, nodeidx, "dihedralangtol", time, 0);
333  myMaxAttempts = 5;
334  if (true)
335  graph->evalOpParm(myMaxAttempts, nodeidx, "maxattempts", time, 0);
336  myUseInvalidColor = true;
337  if (true)
338  graph->evalOpParm(myUseInvalidColor, nodeidx, "useinvalidcolor", time, 0);
339  myInvalidPrimClr = UT_Vector3D(0.2,0,0);
340  if (true && ( (true&&!(((getUseInvalidColor()==0)))) ) )
341  graph->evalOpParm(myInvalidPrimClr, nodeidx, "invalidprimclr", time, 0);
342  myUseInvalidGrp = true;
343  if (true)
344  graph->evalOpParm(myUseInvalidGrp, nodeidx, "useinvalidgrp", time, 0);
345  myInvalidPrimGrp = "invalid_prim_grp"_UTsh;
346  if (true && ( (true&&!(((getUseInvalidGrp()==0)))) ) )
347  graph->evalOpParm(myInvalidPrimGrp, nodeidx, "invalidprimgrp", time, 0);
348 
349  }
350 
351 
352  void loadFromOpSubclass(const LoadParms &loadparms) override
353  {
354  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
355  }
356 
357 
358  void copyFrom(const OP_NodeParms *src) override
359  {
360  *this = *((const SOP_Tetrahedralize_2_0Parms *)src);
361  }
362 
363  template <typename T>
364  void
365  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
366  {
367  if (idx.size() < 1)
368  return;
369  UT_ASSERT(idx.size() == instance.size()+1);
370  if (idx.size() != instance.size()+1)
371  return;
372  switch (idx[0])
373  {
374  case 0:
375  coerceValue(value, myGroup);
376  break;
377  case 1:
378  coerceValue(value, myBatch);
379  break;
380  case 2:
381  coerceValue(value, myPieceAttrib);
382  break;
383  case 3:
384  coerceValue(value, myRemove);
385  break;
386  case 4:
387  coerceValue(value, myMode);
388  break;
389  case 5:
390  coerceValue(value, myOutput);
391  break;
392  case 6:
393  coerceValue(value, myKeepPrims);
394  break;
395  case 7:
396  coerceValue(value, myNoBoundMod);
397  break;
398  case 8:
399  coerceValue(value, myOneFacePerTet);
400  break;
401  case 9:
402  coerceValue(value, myPropNormal);
403  break;
404  case 10:
405  coerceValue(value, myInternAttrib);
406  break;
407  case 11:
408  coerceValue(value, myUseQuality);
409  break;
410  case 12:
411  coerceValue(value, myRadEdgeTol);
412  break;
413  case 13:
414  coerceValue(value, myMinDihedralAngle);
415  break;
416  case 14:
417  coerceValue(value, myUseTargetSizeAttrib);
418  break;
419  case 15:
420  coerceValue(value, myTargetSizeAttrib);
421  break;
422  case 16:
423  coerceValue(value, myUseUniformMaxSize);
424  break;
425  case 17:
426  coerceValue(value, myUniformMaxSize);
427  break;
428  case 18:
429  coerceValue(value, myUseMaxSizeAttrib);
430  break;
431  case 19:
432  coerceValue(value, myMaxSizeAttrib);
433  break;
434  case 20:
435  coerceValue(value, myUseMaxIter);
436  break;
437  case 21:
438  coerceValue(value, myMaxIter);
439  break;
440  case 22:
441  coerceValue(value, myUseMaxSteiner);
442  break;
443  case 23:
444  coerceValue(value, myMaxSteiner);
445  break;
446  case 24:
447  coerceValue(value, myOptIterations);
448  break;
449  case 25:
450  coerceValue(value, myOptEdgeFace);
451  break;
452  case 26:
453  coerceValue(value, myOptVtxSmooth);
454  break;
455  case 27:
456  coerceValue(value, myOptVtxMod);
457  break;
458  case 28:
459  coerceValue(value, myUseIsectColor);
460  break;
461  case 29:
462  coerceValue(value, myIsectPolyClr);
463  break;
464  case 30:
465  coerceValue(value, myUseIsectGrp);
466  break;
467  case 31:
468  coerceValue(value, myIsectPolyGrp);
469  break;
470  case 32:
471  coerceValue(value, myFailures);
472  break;
473  case 33:
474  coerceValue(value, myRandomSeed);
475  break;
476  case 34:
477  coerceValue(value, myPrecisionTol);
478  break;
479  case 35:
480  coerceValue(value, myDihedralAngleTol);
481  break;
482  case 36:
483  coerceValue(value, myMaxAttempts);
484  break;
485  case 37:
486  coerceValue(value, myUseInvalidColor);
487  break;
488  case 38:
489  coerceValue(value, myInvalidPrimClr);
490  break;
491  case 39:
492  coerceValue(value, myUseInvalidGrp);
493  break;
494  case 40:
495  coerceValue(value, myInvalidPrimGrp);
496  break;
497 
498  }
499  }
500 
501  bool isParmColorRamp(exint idx) const override
502  {
503  switch (idx)
504  {
505 
506  }
507  return false;
508  }
509 
510  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
511  { doGetParmValue(idx, instance, value); }
512  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
513  { doGetParmValue(idx, instance, value); }
514  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
515  { doGetParmValue(idx, instance, value); }
516  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
517  { doGetParmValue(idx, instance, value); }
518  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
519  { doGetParmValue(idx, instance, value); }
520  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
521  { doGetParmValue(idx, instance, value); }
522  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
523  { doGetParmValue(idx, instance, value); }
524  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
525  { doGetParmValue(idx, instance, value); }
526  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
527  { doGetParmValue(idx, instance, value); }
528  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
529  { doGetParmValue(idx, instance, value); }
530  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
531  { doGetParmValue(idx, instance, value); }
532 
533  template <typename T>
534  void
535  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
536  {
537  if (idx.size() < 1)
538  return;
539  UT_ASSERT(idx.size() == instance.size()+1);
540  if (idx.size() != instance.size()+1)
541  return;
542  switch (idx[0])
543  {
544  case 0:
545  coerceValue(myGroup, ( ( value ) ));
546  break;
547  case 1:
548  coerceValue(myBatch, clampMinValue(0, clampMaxValue(2, value ) ));
549  break;
550  case 2:
551  coerceValue(myPieceAttrib, ( ( value ) ));
552  break;
553  case 3:
554  coerceValue(myRemove, ( ( value ) ));
555  break;
556  case 4:
557  coerceValue(myMode, clampMinValue(0, clampMaxValue(3, value ) ));
558  break;
559  case 5:
560  coerceValue(myOutput, clampMinValue(0, clampMaxValue(3, value ) ));
561  break;
562  case 6:
563  coerceValue(myKeepPrims, ( ( value ) ));
564  break;
565  case 7:
566  coerceValue(myNoBoundMod, ( ( value ) ));
567  break;
568  case 8:
569  coerceValue(myOneFacePerTet, ( ( value ) ));
570  break;
571  case 9:
572  coerceValue(myPropNormal, ( ( value ) ));
573  break;
574  case 10:
575  coerceValue(myInternAttrib, ( ( value ) ));
576  break;
577  case 11:
578  coerceValue(myUseQuality, ( ( value ) ));
579  break;
580  case 12:
581  coerceValue(myRadEdgeTol, clampMinValue(0.612, ( value ) ));
582  break;
583  case 13:
584  coerceValue(myMinDihedralAngle, clampMinValue(0, clampMaxValue(60, value ) ));
585  break;
586  case 14:
587  coerceValue(myUseTargetSizeAttrib, ( ( value ) ));
588  break;
589  case 15:
590  coerceValue(myTargetSizeAttrib, ( ( value ) ));
591  break;
592  case 16:
593  coerceValue(myUseUniformMaxSize, ( ( value ) ));
594  break;
595  case 17:
596  coerceValue(myUniformMaxSize, clampMinValue(0, ( value ) ));
597  break;
598  case 18:
599  coerceValue(myUseMaxSizeAttrib, ( ( value ) ));
600  break;
601  case 19:
602  coerceValue(myMaxSizeAttrib, ( ( value ) ));
603  break;
604  case 20:
605  coerceValue(myUseMaxIter, ( ( value ) ));
606  break;
607  case 21:
608  coerceValue(myMaxIter, ( ( value ) ));
609  break;
610  case 22:
611  coerceValue(myUseMaxSteiner, ( ( value ) ));
612  break;
613  case 23:
614  coerceValue(myMaxSteiner, clampMinValue(0, ( value ) ));
615  break;
616  case 24:
617  coerceValue(myOptIterations, clampMinValue(0, clampMaxValue(9, value ) ));
618  break;
619  case 25:
620  coerceValue(myOptEdgeFace, ( ( value ) ));
621  break;
622  case 26:
623  coerceValue(myOptVtxSmooth, ( ( value ) ));
624  break;
625  case 27:
626  coerceValue(myOptVtxMod, ( ( value ) ));
627  break;
628  case 28:
629  coerceValue(myUseIsectColor, ( ( value ) ));
630  break;
631  case 29:
632  coerceValue(myIsectPolyClr, ( ( value ) ));
633  break;
634  case 30:
635  coerceValue(myUseIsectGrp, ( ( value ) ));
636  break;
637  case 31:
638  coerceValue(myIsectPolyGrp, ( ( value ) ));
639  break;
640  case 32:
641  coerceValue(myFailures, clampMinValue(0, clampMaxValue(2, value ) ));
642  break;
643  case 33:
644  coerceValue(myRandomSeed, clampMinValue(1, ( value ) ));
645  break;
646  case 34:
647  coerceValue(myPrecisionTol, clampMinValue(0, ( value ) ));
648  break;
649  case 35:
650  coerceValue(myDihedralAngleTol, clampMinValue(0, ( value ) ));
651  break;
652  case 36:
653  coerceValue(myMaxAttempts, ( ( value ) ));
654  break;
655  case 37:
656  coerceValue(myUseInvalidColor, ( ( value ) ));
657  break;
658  case 38:
659  coerceValue(myInvalidPrimClr, ( ( value ) ));
660  break;
661  case 39:
662  coerceValue(myUseInvalidGrp, ( ( value ) ));
663  break;
664  case 40:
665  coerceValue(myInvalidPrimGrp, ( ( value ) ));
666  break;
667 
668  }
669  }
670 
671  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
672  { doSetParmValue(idx, instance, value); }
673  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
674  { doSetParmValue(idx, instance, value); }
675  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
676  { doSetParmValue(idx, instance, value); }
677  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
678  { doSetParmValue(idx, instance, value); }
679  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
680  { doSetParmValue(idx, instance, value); }
681  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
682  { doSetParmValue(idx, instance, value); }
683  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
684  { doSetParmValue(idx, instance, value); }
685  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
686  { doSetParmValue(idx, instance, value); }
687  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
688  { doSetParmValue(idx, instance, value); }
689  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
690  { doSetParmValue(idx, instance, value); }
691  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
692  { doSetParmValue(idx, instance, value); }
693 
694  exint getNestNumParms(TempIndex idx) const override
695  {
696  if (idx.size() == 0)
697  return 41;
698  switch (idx[0])
699  {
700 
701  }
702  // Invalid
703  return 0;
704  }
705 
706  const char *getNestParmName(TempIndex fieldnum) const override
707  {
708  if (fieldnum.size() < 1)
709  return 0;
710  switch (fieldnum[0])
711  {
712  case 0:
713  return "group";
714  case 1:
715  return "batch";
716  case 2:
717  return "pieceattrib";
718  case 3:
719  return "remove";
720  case 4:
721  return "mode";
722  case 5:
723  return "output";
724  case 6:
725  return "keepprims";
726  case 7:
727  return "noboundmod";
728  case 8:
729  return "onefacepertet";
730  case 9:
731  return "propnormal";
732  case 10:
733  return "internattrib";
734  case 11:
735  return "usequality";
736  case 12:
737  return "radedgetol";
738  case 13:
739  return "mindihedralang";
740  case 14:
741  return "usetargetsizeattrib";
742  case 15:
743  return "targetsizeattrib";
744  case 16:
745  return "useuniformmaxsize";
746  case 17:
747  return "uniformmaxsize";
748  case 18:
749  return "usemaxsizeattrib";
750  case 19:
751  return "maxsizeattrib";
752  case 20:
753  return "usemaxiter";
754  case 21:
755  return "maxiter";
756  case 22:
757  return "usemaxsteiner";
758  case 23:
759  return "maxsteiner";
760  case 24:
761  return "optiterations";
762  case 25:
763  return "optedgeface";
764  case 26:
765  return "optvtxsmooth";
766  case 27:
767  return "optvtxmod";
768  case 28:
769  return "useisectcolor";
770  case 29:
771  return "isectpolyclr";
772  case 30:
773  return "useisectgrp";
774  case 31:
775  return "isectpolygrp";
776  case 32:
777  return "failures";
778  case 33:
779  return "randomseed";
780  case 34:
781  return "precisiontol";
782  case 35:
783  return "dihedralangtol";
784  case 36:
785  return "maxattempts";
786  case 37:
787  return "useinvalidcolor";
788  case 38:
789  return "invalidprimclr";
790  case 39:
791  return "useinvalidgrp";
792  case 40:
793  return "invalidprimgrp";
794 
795  }
796  return 0;
797  }
798 
799  ParmType getNestParmType(TempIndex fieldnum) const override
800  {
801  if (fieldnum.size() < 1)
802  return PARM_UNSUPPORTED;
803  switch (fieldnum[0])
804  {
805  case 0:
806  return PARM_STRING;
807  case 1:
808  return PARM_INTEGER;
809  case 2:
810  return PARM_STRING;
811  case 3:
812  return PARM_INTEGER;
813  case 4:
814  return PARM_INTEGER;
815  case 5:
816  return PARM_INTEGER;
817  case 6:
818  return PARM_INTEGER;
819  case 7:
820  return PARM_INTEGER;
821  case 8:
822  return PARM_INTEGER;
823  case 9:
824  return PARM_INTEGER;
825  case 10:
826  return PARM_INTEGER;
827  case 11:
828  return PARM_INTEGER;
829  case 12:
830  return PARM_FLOAT;
831  case 13:
832  return PARM_FLOAT;
833  case 14:
834  return PARM_INTEGER;
835  case 15:
836  return PARM_STRING;
837  case 16:
838  return PARM_INTEGER;
839  case 17:
840  return PARM_FLOAT;
841  case 18:
842  return PARM_INTEGER;
843  case 19:
844  return PARM_STRING;
845  case 20:
846  return PARM_INTEGER;
847  case 21:
848  return PARM_INTEGER;
849  case 22:
850  return PARM_INTEGER;
851  case 23:
852  return PARM_INTEGER;
853  case 24:
854  return PARM_INTEGER;
855  case 25:
856  return PARM_INTEGER;
857  case 26:
858  return PARM_INTEGER;
859  case 27:
860  return PARM_INTEGER;
861  case 28:
862  return PARM_INTEGER;
863  case 29:
864  return PARM_VECTOR3;
865  case 30:
866  return PARM_INTEGER;
867  case 31:
868  return PARM_STRING;
869  case 32:
870  return PARM_INTEGER;
871  case 33:
872  return PARM_INTEGER;
873  case 34:
874  return PARM_FLOAT;
875  case 35:
876  return PARM_FLOAT;
877  case 36:
878  return PARM_INTEGER;
879  case 37:
880  return PARM_INTEGER;
881  case 38:
882  return PARM_VECTOR3;
883  case 39:
884  return PARM_INTEGER;
885  case 40:
886  return PARM_STRING;
887 
888  }
889  return PARM_UNSUPPORTED;
890  }
891 
892  // Boiler plate to load individual types.
893  static void loadData(UT_IStream &is, int64 &v)
894  { is.bread(&v, 1); }
895  static void loadData(UT_IStream &is, bool &v)
896  { int64 iv; is.bread(&iv, 1); v = iv; }
897  static void loadData(UT_IStream &is, fpreal64 &v)
898  { is.bread<fpreal64>(&v, 1); }
899  static void loadData(UT_IStream &is, UT_Vector2D &v)
900  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
901  static void loadData(UT_IStream &is, UT_Vector3D &v)
902  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
903  is.bread<fpreal64>(&v.z(), 1); }
904  static void loadData(UT_IStream &is, UT_Vector4D &v)
905  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
906  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
907  static void loadData(UT_IStream &is, UT_Matrix2D &v)
908  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
909  static void loadData(UT_IStream &is, UT_Matrix3D &v)
910  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
911  static void loadData(UT_IStream &is, UT_Matrix4D &v)
912  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
913  static void loadData(UT_IStream &is, UT_Vector2I &v)
914  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
915  static void loadData(UT_IStream &is, UT_Vector3I &v)
916  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
917  is.bread<int64>(&v.z(), 1); }
918  static void loadData(UT_IStream &is, UT_Vector4I &v)
919  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
920  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
922  { is.bread(v); }
924  { UT_StringHolder rampdata;
925  loadData(is, rampdata);
926  if (rampdata.isstring())
927  {
928  v.reset(new UT_Ramp());
929  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
930  v->load(istr);
931  }
932  else v.reset();
933  }
936  loadData(is, data);
937  if (data.isstring())
938  {
939  // Find the data type.
940  const char *colon = UT_StringWrap(data).findChar(':');
941  if (colon)
942  {
943  int typelen = colon - data.buffer();
945  type.strncpy(data.buffer(), typelen);
946  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
947 
948  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
949  }
950  }
951  else v.reset();
952  }
953 
954  static void saveData(std::ostream &os, int64 v)
955  { UTwrite(os, &v); }
956  static void saveData(std::ostream &os, bool v)
957  { int64 iv = v; UTwrite(os, &iv); }
958  static void saveData(std::ostream &os, fpreal64 v)
959  { UTwrite<fpreal64>(os, &v); }
960  static void saveData(std::ostream &os, UT_Vector2D v)
961  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
962  static void saveData(std::ostream &os, UT_Vector3D v)
963  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
964  UTwrite<fpreal64>(os, &v.z()); }
965  static void saveData(std::ostream &os, UT_Vector4D v)
966  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
967  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
968  static void saveData(std::ostream &os, UT_Matrix2D v)
970  static void saveData(std::ostream &os, UT_Matrix3D v)
972  static void saveData(std::ostream &os, UT_Matrix4D v)
974  static void saveData(std::ostream &os, UT_StringHolder s)
975  { UT_StringWrap(s).saveBinary(os); }
976  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
978  UT_OStringStream ostr;
979  if (s) s->save(ostr);
980  result = ostr.str();
981  saveData(os, result);
982  }
983  static void saveData(std::ostream &os, PRM_DataItemHandle s)
985  UT_OStringStream ostr;
986  if (s)
987  {
988  ostr << s->getDataTypeToken();
989  ostr << ":";
990  s->saveBinary(ostr);
991  }
992  result = ostr.str();
993  saveData(os, result);
994  }
995 
996 
997  void save(std::ostream &os) const
998  {
999  int32 v = version();
1000  UTwrite(os, &v);
1001  saveData(os, myGroup);
1002  saveData(os, myBatch);
1003  saveData(os, myPieceAttrib);
1004  saveData(os, myRemove);
1005  saveData(os, myMode);
1006  saveData(os, myOutput);
1007  saveData(os, myKeepPrims);
1008  saveData(os, myNoBoundMod);
1009  saveData(os, myOneFacePerTet);
1010  saveData(os, myPropNormal);
1011  saveData(os, myInternAttrib);
1012  saveData(os, myUseQuality);
1013  saveData(os, myRadEdgeTol);
1014  saveData(os, myMinDihedralAngle);
1015  saveData(os, myUseTargetSizeAttrib);
1016  saveData(os, myTargetSizeAttrib);
1017  saveData(os, myUseUniformMaxSize);
1018  saveData(os, myUniformMaxSize);
1019  saveData(os, myUseMaxSizeAttrib);
1020  saveData(os, myMaxSizeAttrib);
1021  saveData(os, myUseMaxIter);
1022  saveData(os, myMaxIter);
1023  saveData(os, myUseMaxSteiner);
1024  saveData(os, myMaxSteiner);
1025  saveData(os, myOptIterations);
1026  saveData(os, myOptEdgeFace);
1027  saveData(os, myOptVtxSmooth);
1028  saveData(os, myOptVtxMod);
1029  saveData(os, myUseIsectColor);
1030  saveData(os, myIsectPolyClr);
1031  saveData(os, myUseIsectGrp);
1032  saveData(os, myIsectPolyGrp);
1033  saveData(os, myFailures);
1034  saveData(os, myRandomSeed);
1035  saveData(os, myPrecisionTol);
1036  saveData(os, myDihedralAngleTol);
1037  saveData(os, myMaxAttempts);
1038  saveData(os, myUseInvalidColor);
1039  saveData(os, myInvalidPrimClr);
1040  saveData(os, myUseInvalidGrp);
1041  saveData(os, myInvalidPrimGrp);
1042 
1043  }
1044 
1045  bool load(UT_IStream &is)
1046  {
1047  int32 v;
1048  is.bread(&v, 1);
1049  if (version() != v)
1050  {
1051  // Fail incompatible versions
1052  return false;
1053  }
1054  loadData(is, myGroup);
1055  loadData(is, myBatch);
1056  loadData(is, myPieceAttrib);
1057  loadData(is, myRemove);
1058  loadData(is, myMode);
1059  loadData(is, myOutput);
1060  loadData(is, myKeepPrims);
1061  loadData(is, myNoBoundMod);
1062  loadData(is, myOneFacePerTet);
1063  loadData(is, myPropNormal);
1064  loadData(is, myInternAttrib);
1065  loadData(is, myUseQuality);
1066  loadData(is, myRadEdgeTol);
1067  loadData(is, myMinDihedralAngle);
1068  loadData(is, myUseTargetSizeAttrib);
1069  loadData(is, myTargetSizeAttrib);
1070  loadData(is, myUseUniformMaxSize);
1071  loadData(is, myUniformMaxSize);
1072  loadData(is, myUseMaxSizeAttrib);
1073  loadData(is, myMaxSizeAttrib);
1074  loadData(is, myUseMaxIter);
1075  loadData(is, myMaxIter);
1076  loadData(is, myUseMaxSteiner);
1077  loadData(is, myMaxSteiner);
1078  loadData(is, myOptIterations);
1079  loadData(is, myOptEdgeFace);
1080  loadData(is, myOptVtxSmooth);
1081  loadData(is, myOptVtxMod);
1082  loadData(is, myUseIsectColor);
1083  loadData(is, myIsectPolyClr);
1084  loadData(is, myUseIsectGrp);
1085  loadData(is, myIsectPolyGrp);
1086  loadData(is, myFailures);
1087  loadData(is, myRandomSeed);
1088  loadData(is, myPrecisionTol);
1089  loadData(is, myDihedralAngleTol);
1090  loadData(is, myMaxAttempts);
1091  loadData(is, myUseInvalidColor);
1092  loadData(is, myInvalidPrimClr);
1093  loadData(is, myUseInvalidGrp);
1094  loadData(is, myInvalidPrimGrp);
1095 
1096  return true;
1097  }
1098 
1099  const UT_StringHolder & getGroup() const { return myGroup; }
1100  void setGroup(const UT_StringHolder & val) { myGroup = val; }
1102  {
1103  SOP_Node *thissop = cookparms.getNode();
1104  if (!thissop) return getGroup();
1106  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
1107  return result;
1108  }
1109  Batch getBatch() const { return Batch(myBatch); }
1110  void setBatch(Batch val) { myBatch = int64(val); }
1111  Batch opBatch(const SOP_NodeVerb::CookParms &cookparms) const
1112  {
1113  SOP_Node *thissop = cookparms.getNode();
1114  if (!thissop) return getBatch();
1115  int64 result;
1116  OP_Utils::evalOpParm(result, thissop, "batch", cookparms.getCookTime(), 0);
1117  return Batch(result);
1118  }
1119  const UT_StringHolder & getPieceAttrib() const { return myPieceAttrib; }
1120  void setPieceAttrib(const UT_StringHolder & val) { myPieceAttrib = val; }
1122  {
1123  SOP_Node *thissop = cookparms.getNode();
1124  if (!thissop) return getPieceAttrib();
1126  OP_Utils::evalOpParm(result, thissop, "pieceattrib", cookparms.getCookTime(), 0);
1127  return result;
1128  }
1129  bool getRemove() const { return myRemove; }
1130  void setRemove(bool val) { myRemove = val; }
1131  bool opRemove(const SOP_NodeVerb::CookParms &cookparms) const
1132  {
1133  SOP_Node *thissop = cookparms.getNode();
1134  if (!thissop) return getRemove();
1135  bool result;
1136  OP_Utils::evalOpParm(result, thissop, "remove", cookparms.getCookTime(), 0);
1137  return result;
1138  }
1139  Mode getMode() const { return Mode(myMode); }
1140  void setMode(Mode val) { myMode = int64(val); }
1141  Mode opMode(const SOP_NodeVerb::CookParms &cookparms) const
1142  {
1143  SOP_Node *thissop = cookparms.getNode();
1144  if (!thissop) return getMode();
1145  int64 result;
1146  OP_Utils::evalOpParm(result, thissop, "mode", cookparms.getCookTime(), 0);
1147  return Mode(result);
1148  }
1149  Output getOutput() const { return Output(myOutput); }
1150  void setOutput(Output val) { myOutput = int64(val); }
1151  Output opOutput(const SOP_NodeVerb::CookParms &cookparms) const
1152  {
1153  SOP_Node *thissop = cookparms.getNode();
1154  if (!thissop) return getOutput();
1155  int64 result;
1156  OP_Utils::evalOpParm(result, thissop, "output", cookparms.getCookTime(), 0);
1157  return Output(result);
1158  }
1159  bool getKeepPrims() const { return myKeepPrims; }
1160  void setKeepPrims(bool val) { myKeepPrims = val; }
1161  bool opKeepPrims(const SOP_NodeVerb::CookParms &cookparms) const
1162  {
1163  SOP_Node *thissop = cookparms.getNode();
1164  if (!thissop) return getKeepPrims();
1165  bool result;
1166  OP_Utils::evalOpParm(result, thissop, "keepprims", cookparms.getCookTime(), 0);
1167  return result;
1168  }
1169  bool getNoBoundMod() const { return myNoBoundMod; }
1170  void setNoBoundMod(bool val) { myNoBoundMod = val; }
1171  bool opNoBoundMod(const SOP_NodeVerb::CookParms &cookparms) const
1172  {
1173  SOP_Node *thissop = cookparms.getNode();
1174  if (!thissop) return getNoBoundMod();
1175  bool result;
1176  OP_Utils::evalOpParm(result, thissop, "noboundmod", cookparms.getCookTime(), 0);
1177  return result;
1178  }
1179  bool getOneFacePerTet() const { return myOneFacePerTet; }
1180  void setOneFacePerTet(bool val) { myOneFacePerTet = val; }
1181  bool opOneFacePerTet(const SOP_NodeVerb::CookParms &cookparms) const
1182  {
1183  SOP_Node *thissop = cookparms.getNode();
1184  if (!thissop) return getOneFacePerTet();
1185  bool result;
1186  OP_Utils::evalOpParm(result, thissop, "onefacepertet", cookparms.getCookTime(), 0);
1187  return result;
1188  }
1189  bool getPropNormal() const { return myPropNormal; }
1190  void setPropNormal(bool val) { myPropNormal = val; }
1191  bool opPropNormal(const SOP_NodeVerb::CookParms &cookparms) const
1192  {
1193  SOP_Node *thissop = cookparms.getNode();
1194  if (!thissop) return getPropNormal();
1195  bool result;
1196  OP_Utils::evalOpParm(result, thissop, "propnormal", cookparms.getCookTime(), 0);
1197  return result;
1198  }
1199  bool getInternAttrib() const { return myInternAttrib; }
1200  void setInternAttrib(bool val) { myInternAttrib = val; }
1201  bool opInternAttrib(const SOP_NodeVerb::CookParms &cookparms) const
1202  {
1203  SOP_Node *thissop = cookparms.getNode();
1204  if (!thissop) return getInternAttrib();
1205  bool result;
1206  OP_Utils::evalOpParm(result, thissop, "internattrib", cookparms.getCookTime(), 0);
1207  return result;
1208  }
1209  bool getUseQuality() const { return myUseQuality; }
1210  void setUseQuality(bool val) { myUseQuality = val; }
1211  bool opUseQuality(const SOP_NodeVerb::CookParms &cookparms) const
1212  {
1213  SOP_Node *thissop = cookparms.getNode();
1214  if (!thissop) return getUseQuality();
1215  bool result;
1216  OP_Utils::evalOpParm(result, thissop, "usequality", cookparms.getCookTime(), 0);
1217  return result;
1218  }
1219  fpreal64 getRadEdgeTol() const { return myRadEdgeTol; }
1220  void setRadEdgeTol(fpreal64 val) { myRadEdgeTol = val; }
1222  {
1223  SOP_Node *thissop = cookparms.getNode();
1224  if (!thissop) return getRadEdgeTol();
1225  fpreal64 result;
1226  OP_Utils::evalOpParm(result, thissop, "radedgetol", cookparms.getCookTime(), 0);
1227  return result;
1228  }
1229  fpreal64 getMinDihedralAngle() const { return myMinDihedralAngle; }
1230  void setMinDihedralAngle(fpreal64 val) { myMinDihedralAngle = val; }
1232  {
1233  SOP_Node *thissop = cookparms.getNode();
1234  if (!thissop) return getMinDihedralAngle();
1235  fpreal64 result;
1236  OP_Utils::evalOpParm(result, thissop, "mindihedralang", cookparms.getCookTime(), 0);
1237  return result;
1238  }
1239  bool getUseTargetSizeAttrib() const { return myUseTargetSizeAttrib; }
1240  void setUseTargetSizeAttrib(bool val) { myUseTargetSizeAttrib = val; }
1241  bool opUseTargetSizeAttrib(const SOP_NodeVerb::CookParms &cookparms) const
1242  {
1243  SOP_Node *thissop = cookparms.getNode();
1244  if (!thissop) return getUseTargetSizeAttrib();
1245  bool result;
1246  OP_Utils::evalOpParm(result, thissop, "usetargetsizeattrib", cookparms.getCookTime(), 0);
1247  return result;
1248  }
1249  const UT_StringHolder & getTargetSizeAttrib() const { return myTargetSizeAttrib; }
1250  void setTargetSizeAttrib(const UT_StringHolder & val) { myTargetSizeAttrib = val; }
1252  {
1253  SOP_Node *thissop = cookparms.getNode();
1254  if (!thissop) return getTargetSizeAttrib();
1256  OP_Utils::evalOpParm(result, thissop, "targetsizeattrib", cookparms.getCookTime(), 0);
1257  return result;
1258  }
1259  bool getUseUniformMaxSize() const { return myUseUniformMaxSize; }
1260  void setUseUniformMaxSize(bool val) { myUseUniformMaxSize = val; }
1261  bool opUseUniformMaxSize(const SOP_NodeVerb::CookParms &cookparms) const
1262  {
1263  SOP_Node *thissop = cookparms.getNode();
1264  if (!thissop) return getUseUniformMaxSize();
1265  bool result;
1266  OP_Utils::evalOpParm(result, thissop, "useuniformmaxsize", cookparms.getCookTime(), 0);
1267  return result;
1268  }
1269  fpreal64 getUniformMaxSize() const { return myUniformMaxSize; }
1270  void setUniformMaxSize(fpreal64 val) { myUniformMaxSize = val; }
1272  {
1273  SOP_Node *thissop = cookparms.getNode();
1274  if (!thissop) return getUniformMaxSize();
1275  fpreal64 result;
1276  OP_Utils::evalOpParm(result, thissop, "uniformmaxsize", cookparms.getCookTime(), 0);
1277  return result;
1278  }
1279  bool getUseMaxSizeAttrib() const { return myUseMaxSizeAttrib; }
1280  void setUseMaxSizeAttrib(bool val) { myUseMaxSizeAttrib = val; }
1281  bool opUseMaxSizeAttrib(const SOP_NodeVerb::CookParms &cookparms) const
1282  {
1283  SOP_Node *thissop = cookparms.getNode();
1284  if (!thissop) return getUseMaxSizeAttrib();
1285  bool result;
1286  OP_Utils::evalOpParm(result, thissop, "usemaxsizeattrib", cookparms.getCookTime(), 0);
1287  return result;
1288  }
1289  const UT_StringHolder & getMaxSizeAttrib() const { return myMaxSizeAttrib; }
1290  void setMaxSizeAttrib(const UT_StringHolder & val) { myMaxSizeAttrib = val; }
1292  {
1293  SOP_Node *thissop = cookparms.getNode();
1294  if (!thissop) return getMaxSizeAttrib();
1296  OP_Utils::evalOpParm(result, thissop, "maxsizeattrib", cookparms.getCookTime(), 0);
1297  return result;
1298  }
1299  bool getUseMaxIter() const { return myUseMaxIter; }
1300  void setUseMaxIter(bool val) { myUseMaxIter = val; }
1301  bool opUseMaxIter(const SOP_NodeVerb::CookParms &cookparms) const
1302  {
1303  SOP_Node *thissop = cookparms.getNode();
1304  if (!thissop) return getUseMaxIter();
1305  bool result;
1306  OP_Utils::evalOpParm(result, thissop, "usemaxiter", cookparms.getCookTime(), 0);
1307  return result;
1308  }
1309  int64 getMaxIter() const { return myMaxIter; }
1310  void setMaxIter(int64 val) { myMaxIter = val; }
1311  int64 opMaxIter(const SOP_NodeVerb::CookParms &cookparms) const
1312  {
1313  SOP_Node *thissop = cookparms.getNode();
1314  if (!thissop) return getMaxIter();
1315  int64 result;
1316  OP_Utils::evalOpParm(result, thissop, "maxiter", cookparms.getCookTime(), 0);
1317  return result;
1318  }
1319  bool getUseMaxSteiner() const { return myUseMaxSteiner; }
1320  void setUseMaxSteiner(bool val) { myUseMaxSteiner = val; }
1321  bool opUseMaxSteiner(const SOP_NodeVerb::CookParms &cookparms) const
1322  {
1323  SOP_Node *thissop = cookparms.getNode();
1324  if (!thissop) return getUseMaxSteiner();
1325  bool result;
1326  OP_Utils::evalOpParm(result, thissop, "usemaxsteiner", cookparms.getCookTime(), 0);
1327  return result;
1328  }
1329  int64 getMaxSteiner() const { return myMaxSteiner; }
1330  void setMaxSteiner(int64 val) { myMaxSteiner = val; }
1332  {
1333  SOP_Node *thissop = cookparms.getNode();
1334  if (!thissop) return getMaxSteiner();
1335  int64 result;
1336  OP_Utils::evalOpParm(result, thissop, "maxsteiner", cookparms.getCookTime(), 0);
1337  return result;
1338  }
1339  int64 getOptIterations() const { return myOptIterations; }
1340  void setOptIterations(int64 val) { myOptIterations = val; }
1342  {
1343  SOP_Node *thissop = cookparms.getNode();
1344  if (!thissop) return getOptIterations();
1345  int64 result;
1346  OP_Utils::evalOpParm(result, thissop, "optiterations", cookparms.getCookTime(), 0);
1347  return result;
1348  }
1349  bool getOptEdgeFace() const { return myOptEdgeFace; }
1350  void setOptEdgeFace(bool val) { myOptEdgeFace = val; }
1351  bool opOptEdgeFace(const SOP_NodeVerb::CookParms &cookparms) const
1352  {
1353  SOP_Node *thissop = cookparms.getNode();
1354  if (!thissop) return getOptEdgeFace();
1355  bool result;
1356  OP_Utils::evalOpParm(result, thissop, "optedgeface", cookparms.getCookTime(), 0);
1357  return result;
1358  }
1359  bool getOptVtxSmooth() const { return myOptVtxSmooth; }
1360  void setOptVtxSmooth(bool val) { myOptVtxSmooth = val; }
1361  bool opOptVtxSmooth(const SOP_NodeVerb::CookParms &cookparms) const
1362  {
1363  SOP_Node *thissop = cookparms.getNode();
1364  if (!thissop) return getOptVtxSmooth();
1365  bool result;
1366  OP_Utils::evalOpParm(result, thissop, "optvtxsmooth", cookparms.getCookTime(), 0);
1367  return result;
1368  }
1369  bool getOptVtxMod() const { return myOptVtxMod; }
1370  void setOptVtxMod(bool val) { myOptVtxMod = val; }
1371  bool opOptVtxMod(const SOP_NodeVerb::CookParms &cookparms) const
1372  {
1373  SOP_Node *thissop = cookparms.getNode();
1374  if (!thissop) return getOptVtxMod();
1375  bool result;
1376  OP_Utils::evalOpParm(result, thissop, "optvtxmod", cookparms.getCookTime(), 0);
1377  return result;
1378  }
1379  bool getUseIsectColor() const { return myUseIsectColor; }
1380  void setUseIsectColor(bool val) { myUseIsectColor = val; }
1381  bool opUseIsectColor(const SOP_NodeVerb::CookParms &cookparms) const
1382  {
1383  SOP_Node *thissop = cookparms.getNode();
1384  if (!thissop) return getUseIsectColor();
1385  bool result;
1386  OP_Utils::evalOpParm(result, thissop, "useisectcolor", cookparms.getCookTime(), 0);
1387  return result;
1388  }
1389  UT_Vector3D getIsectPolyClr() const { return myIsectPolyClr; }
1390  void setIsectPolyClr(UT_Vector3D val) { myIsectPolyClr = val; }
1392  {
1393  SOP_Node *thissop = cookparms.getNode();
1394  if (!thissop) return getIsectPolyClr();
1396  OP_Utils::evalOpParm(result, thissop, "isectpolyclr", cookparms.getCookTime(), 0);
1397  return result;
1398  }
1399  bool getUseIsectGrp() const { return myUseIsectGrp; }
1400  void setUseIsectGrp(bool val) { myUseIsectGrp = val; }
1401  bool opUseIsectGrp(const SOP_NodeVerb::CookParms &cookparms) const
1402  {
1403  SOP_Node *thissop = cookparms.getNode();
1404  if (!thissop) return getUseIsectGrp();
1405  bool result;
1406  OP_Utils::evalOpParm(result, thissop, "useisectgrp", cookparms.getCookTime(), 0);
1407  return result;
1408  }
1409  const UT_StringHolder & getIsectPolyGrp() const { return myIsectPolyGrp; }
1410  void setIsectPolyGrp(const UT_StringHolder & val) { myIsectPolyGrp = val; }
1412  {
1413  SOP_Node *thissop = cookparms.getNode();
1414  if (!thissop) return getIsectPolyGrp();
1416  OP_Utils::evalOpParm(result, thissop, "isectpolygrp", cookparms.getCookTime(), 0);
1417  return result;
1418  }
1419  Failures getFailures() const { return Failures(myFailures); }
1420  void setFailures(Failures val) { myFailures = int64(val); }
1422  {
1423  SOP_Node *thissop = cookparms.getNode();
1424  if (!thissop) return getFailures();
1425  int64 result;
1426  OP_Utils::evalOpParm(result, thissop, "failures", cookparms.getCookTime(), 0);
1427  return Failures(result);
1428  }
1429  int64 getRandomSeed() const { return myRandomSeed; }
1430  void setRandomSeed(int64 val) { myRandomSeed = val; }
1432  {
1433  SOP_Node *thissop = cookparms.getNode();
1434  if (!thissop) return getRandomSeed();
1435  int64 result;
1436  OP_Utils::evalOpParm(result, thissop, "randomseed", cookparms.getCookTime(), 0);
1437  return result;
1438  }
1439  fpreal64 getPrecisionTol() const { return myPrecisionTol; }
1440  void setPrecisionTol(fpreal64 val) { myPrecisionTol = val; }
1442  {
1443  SOP_Node *thissop = cookparms.getNode();
1444  if (!thissop) return getPrecisionTol();
1445  fpreal64 result;
1446  OP_Utils::evalOpParm(result, thissop, "precisiontol", cookparms.getCookTime(), 0);
1447  return result;
1448  }
1449  fpreal64 getDihedralAngleTol() const { return myDihedralAngleTol; }
1450  void setDihedralAngleTol(fpreal64 val) { myDihedralAngleTol = val; }
1452  {
1453  SOP_Node *thissop = cookparms.getNode();
1454  if (!thissop) return getDihedralAngleTol();
1455  fpreal64 result;
1456  OP_Utils::evalOpParm(result, thissop, "dihedralangtol", cookparms.getCookTime(), 0);
1457  return result;
1458  }
1459  int64 getMaxAttempts() const { return myMaxAttempts; }
1460  void setMaxAttempts(int64 val) { myMaxAttempts = val; }
1462  {
1463  SOP_Node *thissop = cookparms.getNode();
1464  if (!thissop) return getMaxAttempts();
1465  int64 result;
1466  OP_Utils::evalOpParm(result, thissop, "maxattempts", cookparms.getCookTime(), 0);
1467  return result;
1468  }
1469  bool getUseInvalidColor() const { return myUseInvalidColor; }
1470  void setUseInvalidColor(bool val) { myUseInvalidColor = val; }
1471  bool opUseInvalidColor(const SOP_NodeVerb::CookParms &cookparms) const
1472  {
1473  SOP_Node *thissop = cookparms.getNode();
1474  if (!thissop) return getUseInvalidColor();
1475  bool result;
1476  OP_Utils::evalOpParm(result, thissop, "useinvalidcolor", cookparms.getCookTime(), 0);
1477  return result;
1478  }
1479  UT_Vector3D getInvalidPrimClr() const { return myInvalidPrimClr; }
1480  void setInvalidPrimClr(UT_Vector3D val) { myInvalidPrimClr = val; }
1482  {
1483  SOP_Node *thissop = cookparms.getNode();
1484  if (!thissop) return getInvalidPrimClr();
1486  OP_Utils::evalOpParm(result, thissop, "invalidprimclr", cookparms.getCookTime(), 0);
1487  return result;
1488  }
1489  bool getUseInvalidGrp() const { return myUseInvalidGrp; }
1490  void setUseInvalidGrp(bool val) { myUseInvalidGrp = val; }
1491  bool opUseInvalidGrp(const SOP_NodeVerb::CookParms &cookparms) const
1492  {
1493  SOP_Node *thissop = cookparms.getNode();
1494  if (!thissop) return getUseInvalidGrp();
1495  bool result;
1496  OP_Utils::evalOpParm(result, thissop, "useinvalidgrp", cookparms.getCookTime(), 0);
1497  return result;
1498  }
1499  const UT_StringHolder & getInvalidPrimGrp() const { return myInvalidPrimGrp; }
1500  void setInvalidPrimGrp(const UT_StringHolder & val) { myInvalidPrimGrp = val; }
1502  {
1503  SOP_Node *thissop = cookparms.getNode();
1504  if (!thissop) return getInvalidPrimGrp();
1506  OP_Utils::evalOpParm(result, thissop, "invalidprimgrp", cookparms.getCookTime(), 0);
1507  return result;
1508  }
1509 
1510 private:
1511  UT_StringHolder myGroup;
1512  int64 myBatch;
1513  UT_StringHolder myPieceAttrib;
1514  bool myRemove;
1515  int64 myMode;
1516  int64 myOutput;
1517  bool myKeepPrims;
1518  bool myNoBoundMod;
1519  bool myOneFacePerTet;
1520  bool myPropNormal;
1521  bool myInternAttrib;
1522  bool myUseQuality;
1523  fpreal64 myRadEdgeTol;
1524  fpreal64 myMinDihedralAngle;
1525  bool myUseTargetSizeAttrib;
1526  UT_StringHolder myTargetSizeAttrib;
1527  bool myUseUniformMaxSize;
1528  fpreal64 myUniformMaxSize;
1529  bool myUseMaxSizeAttrib;
1530  UT_StringHolder myMaxSizeAttrib;
1531  bool myUseMaxIter;
1532  int64 myMaxIter;
1533  bool myUseMaxSteiner;
1534  int64 myMaxSteiner;
1535  int64 myOptIterations;
1536  bool myOptEdgeFace;
1537  bool myOptVtxSmooth;
1538  bool myOptVtxMod;
1539  bool myUseIsectColor;
1540  UT_Vector3D myIsectPolyClr;
1541  bool myUseIsectGrp;
1542  UT_StringHolder myIsectPolyGrp;
1543  int64 myFailures;
1544  int64 myRandomSeed;
1545  fpreal64 myPrecisionTol;
1546  fpreal64 myDihedralAngleTol;
1547  int64 myMaxAttempts;
1548  bool myUseInvalidColor;
1549  UT_Vector3D myInvalidPrimClr;
1550  bool myUseInvalidGrp;
1551  UT_StringHolder myInvalidPrimGrp;
1552 
1553 };
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
void loadFromOpSubclass(const LoadParms &loadparms) override
const UT_StringHolder & getTargetSizeAttrib() const
static void saveData(std::ostream &os, UT_Vector3D v)
bool opUseTargetSizeAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
static void saveData(std::ostream &os, UT_Matrix4D v)
fpreal64 opUniformMaxSize(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getInvalidPrimGrp() const
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
bool opUseIsectGrp(const SOP_NodeVerb::CookParms &cookparms) const
int64 opMaxIter(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
static void saveData(std::ostream &os, bool v)
static void loadData(UT_IStream &is, UT_Matrix2D &v)
exint bread(int32 *buffer, exint asize=1)
GLboolean * data
Definition: glcorearb.h:131
static void saveData(std::ostream &os, UT_Matrix2D v)
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:493
const GLdouble * v
Definition: glcorearb.h:837
fpreal getTime() const
Definition: OP_Context.h:62
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
bool opOneFacePerTet(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, PRM_DataItemHandle s)
bool opUseIsectColor(const SOP_NodeVerb::CookParms &cookparms) const
int64 opMaxAttempts(const SOP_NodeVerb::CookParms &cookparms) const
const OP_Context & context() const
Definition: OP_NodeParms.h:97
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
bool opOptVtxSmooth(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
SYS_FORCE_INLINE const char * buffer() const
Mode opMode(const SOP_NodeVerb::CookParms &cookparms) const
GLdouble s
Definition: glad.h:3009
void setTargetSizeAttrib(const UT_StringHolder &val)
An output stream object that owns its own string buffer storage.
fpreal64 opPrecisionTol(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector3D &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
**But if you need a result
Definition: thread.h:613
static void saveData(std::ostream &os, UT_Vector4D v)
UT_StringHolder opIsectPolyGrp(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D opIsectPolyClr(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix4D &v)
fpreal64 opDihedralAngleTol(const SOP_NodeVerb::CookParms &cookparms) const
exint nodeIdx() const
Definition: OP_NodeParms.h:95
fpreal64 opRadEdgeTol(const SOP_NodeVerb::CookParms &cookparms) 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.
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
bool opUseInvalidGrp(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, int64 v)
bool opUseMaxSizeAttrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opPieceAttrib(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
SYS_FORCE_INLINE UT_StringHolder getToken(Batch enum_value)
void setMaxSizeAttrib(const UT_StringHolder &val)
const UT_StringHolder & getIsectPolyGrp() const
UT_Vector3D opInvalidPrimClr(const SOP_NodeVerb::CookParms &cookparms) const
int64 opRandomSeed(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getPieceAttrib() const
void setGroup(const UT_StringHolder &val)
UT_StringHolder opMaxSizeAttrib(const SOP_NodeVerb::CookParms &cookparms) const
ParmType getNestParmType(TempIndex fieldnum) const override
double fpreal64
Definition: SYS_Types.h:201
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
bool opUseInvalidColor(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
bool opUseQuality(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector2I &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
static void loadData(UT_IStream &is, int64 &v)
void save(std::ostream &os) const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
exint length() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
fpreal64 opMinDihedralAngle(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
exint getNestNumParms(TempIndex idx) const override
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
UT_StringHolder opTargetSizeAttrib(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getMaxSizeAttrib() const
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
bool opUseUniformMaxSize(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const SOP_Tetrahedralize_2_0Parms &src) const
void setPieceAttrib(const UT_StringHolder &val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
static void loadData(UT_IStream &is, UT_Vector3I &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
long long int64
Definition: SYS_Types.h:116
const char * getNestParmName(TempIndex fieldnum) const override
UT_Vector3T< fpreal64 > UT_Vector3D
bool opOptEdgeFace(const SOP_NodeVerb::CookParms &cookparms) const
Output opOutput(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, fpreal64 v)
UT_StringHolder opInvalidPrimGrp(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
bool opKeepPrims(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
static void saveData(std::ostream &os, UT_Vector2D v)
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
bool operator!=(const SOP_Tetrahedralize_2_0Parms &src) const
GT_API const UT_StringHolder version
bool opRemove(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, fpreal64 &v)
bool opOptVtxMod(const SOP_NodeVerb::CookParms &cookparms) const
void setIsectPolyGrp(const UT_StringHolder &val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
static void saveData(std::ostream &os, UT_StringHolder s)
void setInvalidPrimGrp(const UT_StringHolder &val)
fpreal64 fpreal
Definition: SYS_Types.h:277
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
LeafData & operator=(const LeafData &)=delete
Utility class for containing a color ramp.
Definition: UT_Ramp.h:92
static void loadData(UT_IStream &is, UT_Vector4I &v)
Failures opFailures(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector2D &v)
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
static void loadData(UT_IStream &is, UT_Vector4D &v)
GLuint GLfloat * val
Definition: glcorearb.h:1608
bool opPropNormal(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
#define SOP_API
Definition: SOP_API.h:10
int64 opMaxSteiner(const SOP_NodeVerb::CookParms &cookparms) const
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
Batch opBatch(const SOP_NodeVerb::CookParms &cookparms) const
bool opUseMaxIter(const SOP_NodeVerb::CookParms &cookparms) const
bool opInternAttrib(const SOP_NodeVerb::CookParms &cookparms) const
const char * findChar(int c) const
Definition: UT_String.h:1395
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
Definition: core.h:1131
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
GLboolean r
Definition: glcorearb.h:1222
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
bool opUseMaxSteiner(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getGroup() const
int64 opOptIterations(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, bool &v)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
static void loadData(UT_IStream &is, UT_StringHolder &v)
type
Definition: core.h:1059
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:97
void copyFrom(const OP_NodeParms *src) override
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
static void loadData(UT_IStream &is, UT_Matrix3D &v)
SYS_FORCE_INLINE bool isstring() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
bool opNoBoundMod(const SOP_NodeVerb::CookParms &cookparms) const
bool isParmColorRamp(exint idx) const override
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
static void saveData(std::ostream &os, UT_Matrix3D v)
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663