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