HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_QuadRemesh.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_QuadRemeshEnums
24 {
25  enum class Output
26  {
27  EXTRACTED_MESH = 0,
29  };
30 
32  getToken(Output enum_value)
33  {
34  using namespace UT::Literal;
35  switch (enum_value) {
36  case Output::EXTRACTED_MESH: return "extracted_mesh"_sh;
37  case Output::GLOBAL_TEXTURE: return "global_texture"_sh;
38  default: UT_ASSERT(false); return ""_sh;
39  }
40  }
41 
42  enum class ResolutionMode
43  {
44  QUAD_COUNT = 0,
45  QUAD_AREA,
46  TOLERANCE,
49  };
50 
52  getToken(ResolutionMode enum_value)
53  {
54  using namespace UT::Literal;
55  switch (enum_value) {
56  case ResolutionMode::QUAD_COUNT: return "quad_count"_sh;
57  case ResolutionMode::QUAD_AREA: return "quad_area"_sh;
58  case ResolutionMode::TOLERANCE: return "tolerance"_sh;
59  case ResolutionMode::RELATIVE_SCALE: return "relative_scale"_sh;
60  case ResolutionMode::ABSOLUTE_SCALE: return "absolute_scale"_sh;
61  default: UT_ASSERT(false); return ""_sh;
62  }
63  }
64 
65  enum class ResolutionSource
66  {
67  AUTO = 0,
69  };
70 
73  {
74  using namespace UT::Literal;
75  switch (enum_value) {
76  case ResolutionSource::AUTO: return "auto"_sh;
77  case ResolutionSource::TRIANGLE_AREA: return "triangle_area"_sh;
78  default: UT_ASSERT(false); return ""_sh;
79  }
80  }
81 
82  enum class XDirection
83  {
84  POSITIVE = 0,
85  NEGATIVE
86  };
87 
89  getToken(XDirection enum_value)
90  {
91  using namespace UT::Literal;
92  switch (enum_value) {
93  case XDirection::POSITIVE: return "positive"_sh;
94  case XDirection::NEGATIVE: return "negative"_sh;
95  default: UT_ASSERT(false); return ""_sh;
96  }
97  }
98 
99  enum class YDirection
100  {
101  POSITIVE = 0,
102  NEGATIVE
103  };
104 
106  getToken(YDirection enum_value)
107  {
108  using namespace UT::Literal;
109  switch (enum_value) {
110  case YDirection::POSITIVE: return "positive"_sh;
111  case YDirection::NEGATIVE: return "negative"_sh;
112  default: UT_ASSERT(false); return ""_sh;
113  }
114  }
115 
116  enum class ZDirection
117  {
118  POSITIVE = 0,
119  NEGATIVE
120  };
121 
123  getToken(ZDirection enum_value)
124  {
125  using namespace UT::Literal;
126  switch (enum_value) {
127  case ZDirection::POSITIVE: return "positive"_sh;
128  case ZDirection::NEGATIVE: return "negative"_sh;
129  default: UT_ASSERT(false); return ""_sh;
130  }
131  }
132 
133  enum class Field
134  {
135  FACE = 0,
136  EDGE
137  };
138 
140  getToken(Field enum_value)
141  {
142  using namespace UT::Literal;
143  switch (enum_value) {
144  case Field::FACE: return "face"_sh;
145  case Field::EDGE: return "edge"_sh;
146  default: UT_ASSERT(false); return ""_sh;
147  }
148  }
149 
150  enum class BoundaryMode
151  {
152  ADD = 0,
153  OVER
154  };
155 
157  getToken(BoundaryMode enum_value)
158  {
159  using namespace UT::Literal;
160  switch (enum_value) {
161  case BoundaryMode::ADD: return "add"_sh;
162  case BoundaryMode::OVER: return "over"_sh;
163  default: UT_ASSERT(false); return ""_sh;
164  }
165  }
166 
167  enum class GuideMode
168  {
169  ADD = 0,
170  OVER
171  };
172 
174  getToken(GuideMode enum_value)
175  {
176  using namespace UT::Literal;
177  switch (enum_value) {
178  case GuideMode::ADD: return "add"_sh;
179  case GuideMode::OVER: return "over"_sh;
180  default: UT_ASSERT(false); return ""_sh;
181  }
182  }
183 
184 }
185 
186 
188 {
189 public:
190  static int version() { return 1; }
191 
193  {
194  myGroup = ""_UTsh;
195  myDecimation = true;
196  myDecimationLevel = 2;
197  myOutput = 0;
198  myResolutionMode = 0;
199  myTargetQuadCount = 10000;
200  myTargetQuadArea = .1;
201  myTargetTolerance = .1;
202  myResolutionScale = 0;
203  myResolutionSource = 0;
204  myTriangleArea = .125;
205  mySymmetryCenter = UT_Vector3D(0,0,0);
206  myXAxis = false;
207  myXDirection = 0;
208  myYAxis = false;
209  myYDirection = 0;
210  myZAxis = false;
211  myZDirection = 0;
212  myMirrorOutput = true;
213  myEnableConsolidateSeam = true;
214  myConsolidateSeam = 0.0001;
215  myFeatureBoundaries = true;
216  myField = 0;
217  myGlobalWeight = 0.1;
218  myGlobalMask = ""_UTsh;
219  mySymmetryAlignment = 1;
220  myCurvature = true;
221  myLocalCurvatureWeight = 1;
222  myCurvatureMaskAttrib = ""_UTsh;
223  myCurvatureRotation = 0;
224  myBoundary = true;
225  myBoundaryMode = 0;
226  myLocalBoundaryWeight = 1;
227  myBoundaryMaskAttrib = ""_UTsh;
228  myBoundaryRotation = 0;
229  myGuide = true;
230  myGuideMode = 0;
231  myLocalGuideWeight = 1;
232  myGuideMaskAttrib = ""_UTsh;
233  myGuideAttrib = ""_UTsh;
234 
235  }
236 
237  explicit SOP_QuadRemeshParms(const SOP_QuadRemeshParms &) = default;
239  SOP_QuadRemeshParms(SOP_QuadRemeshParms &&) noexcept = default;
240  SOP_QuadRemeshParms &operator=(SOP_QuadRemeshParms &&) noexcept = default;
241 
242  ~SOP_QuadRemeshParms() override {}
243 
244  bool operator==(const SOP_QuadRemeshParms &src) const
245  {
246  if (myGroup != src.myGroup) return false;
247  if (myDecimation != src.myDecimation) return false;
248  if (myDecimationLevel != src.myDecimationLevel) return false;
249  if (myOutput != src.myOutput) return false;
250  if (myResolutionMode != src.myResolutionMode) return false;
251  if (myTargetQuadCount != src.myTargetQuadCount) return false;
252  if (myTargetQuadArea != src.myTargetQuadArea) return false;
253  if (myTargetTolerance != src.myTargetTolerance) return false;
254  if (myResolutionScale != src.myResolutionScale) return false;
255  if (myResolutionSource != src.myResolutionSource) return false;
256  if (myTriangleArea != src.myTriangleArea) return false;
257  if (mySymmetryCenter != src.mySymmetryCenter) return false;
258  if (myXAxis != src.myXAxis) return false;
259  if (myXDirection != src.myXDirection) return false;
260  if (myYAxis != src.myYAxis) return false;
261  if (myYDirection != src.myYDirection) return false;
262  if (myZAxis != src.myZAxis) return false;
263  if (myZDirection != src.myZDirection) return false;
264  if (myMirrorOutput != src.myMirrorOutput) return false;
265  if (myEnableConsolidateSeam != src.myEnableConsolidateSeam) return false;
266  if (myConsolidateSeam != src.myConsolidateSeam) return false;
267  if (myFeatureBoundaries != src.myFeatureBoundaries) return false;
268  if (myField != src.myField) return false;
269  if (myGlobalWeight != src.myGlobalWeight) return false;
270  if (myGlobalMask != src.myGlobalMask) return false;
271  if (mySymmetryAlignment != src.mySymmetryAlignment) return false;
272  if (myCurvature != src.myCurvature) return false;
273  if (myLocalCurvatureWeight != src.myLocalCurvatureWeight) return false;
274  if (myCurvatureMaskAttrib != src.myCurvatureMaskAttrib) return false;
275  if (myCurvatureRotation != src.myCurvatureRotation) return false;
276  if (myBoundary != src.myBoundary) return false;
277  if (myBoundaryMode != src.myBoundaryMode) return false;
278  if (myLocalBoundaryWeight != src.myLocalBoundaryWeight) return false;
279  if (myBoundaryMaskAttrib != src.myBoundaryMaskAttrib) return false;
280  if (myBoundaryRotation != src.myBoundaryRotation) return false;
281  if (myGuide != src.myGuide) return false;
282  if (myGuideMode != src.myGuideMode) return false;
283  if (myLocalGuideWeight != src.myLocalGuideWeight) return false;
284  if (myGuideMaskAttrib != src.myGuideMaskAttrib) return false;
285  if (myGuideAttrib != src.myGuideAttrib) return false;
286 
287  return true;
288  }
289  bool operator!=(const SOP_QuadRemeshParms &src) const
290  {
291  return !operator==(src);
292  }
302 
303 
304 
305  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
306  {
307  myGroup = ""_UTsh;
308  if (true)
309  graph->evalOpParm(myGroup, nodeidx, "group", time, 0);
310  myDecimation = true;
311  if (true)
312  graph->evalOpParm(myDecimation, nodeidx, "decimation", time, 0);
313  myDecimationLevel = 2;
314  if (true)
315  graph->evalOpParm(myDecimationLevel, nodeidx, "decimationlevel", time, 0);
316  myOutput = 0;
317  if (true)
318  graph->evalOpParm(myOutput, nodeidx, "output", time, 0);
319  myResolutionMode = 0;
320  if (true)
321  graph->evalOpParm(myResolutionMode, nodeidx, "resolution", time, 0);
322  myTargetQuadCount = 10000;
323  if (true && ( (true&&!(((int64(getResolutionMode())!=0)))) ) )
324  graph->evalOpParm(myTargetQuadCount, nodeidx, "targetquadcount", time, 0);
325  myTargetQuadArea = .1;
326  if (true && ( (true&&!(((int64(getResolutionMode())!=1)))) ) )
327  graph->evalOpParm(myTargetQuadArea, nodeidx, "targetquadarea", time, 0);
328  myTargetTolerance = .1;
329  if (true && ( (true&&!(((int64(getResolutionMode())!=2)))) ) )
330  graph->evalOpParm(myTargetTolerance, nodeidx, "targettolerance", time, 0);
331  myResolutionScale = 0;
332  if (true && ( (true&&!(((int64(getResolutionMode())!=4)&&(int64(getResolutionMode())!=3)))) ) )
333  graph->evalOpParm(myResolutionScale, nodeidx, "resolutionscale", time, 0);
334  myResolutionSource = 0;
335  if (true && ( (true&&!(((int64(getResolutionMode())!=4)))) ) )
336  graph->evalOpParm(myResolutionSource, nodeidx, "resolutionsource", time, 0);
337  myTriangleArea = .125;
338  if (true && ( (true&&!(((int64(getResolutionMode())!=4))||((int64(getResolutionSource())!=1)))) ) )
339  graph->evalOpParm(myTriangleArea, nodeidx, "trianglearea", time, 0);
340  mySymmetryCenter = UT_Vector3D(0,0,0);
341  if (true)
342  graph->evalOpParm(mySymmetryCenter, nodeidx, "symmetrycenter", time, 0);
343  myXAxis = false;
344  if (true)
345  graph->evalOpParm(myXAxis, nodeidx, "xaxis", time, 0);
346  myXDirection = 0;
347  if (true)
348  graph->evalOpParm(myXDirection, nodeidx, "xdirection", time, 0);
349  myYAxis = false;
350  if (true)
351  graph->evalOpParm(myYAxis, nodeidx, "yaxis", time, 0);
352  myYDirection = 0;
353  if (true)
354  graph->evalOpParm(myYDirection, nodeidx, "ydirection", time, 0);
355  myZAxis = false;
356  if (true)
357  graph->evalOpParm(myZAxis, nodeidx, "zaxis", time, 0);
358  myZDirection = 0;
359  if (true)
360  graph->evalOpParm(myZDirection, nodeidx, "zdirection", time, 0);
361  myMirrorOutput = true;
362  if (true)
363  graph->evalOpParm(myMirrorOutput, nodeidx, "mirroroutput", time, 0);
364  myEnableConsolidateSeam = true;
365  if (true && ( (true&&!(((getMirrorOutput()==0)))) ) )
366  graph->evalOpParm(myEnableConsolidateSeam, nodeidx, "consolidatepts", time, 0);
367  myConsolidateSeam = 0.0001;
368  if (true && ( (true&&!(((getMirrorOutput()==0))||((getEnableConsolidateSeam()==0)))) ) )
369  graph->evalOpParm(myConsolidateSeam, nodeidx, "consolidatetol", time, 0);
370  myFeatureBoundaries = true;
371  if (true)
372  graph->evalOpParm(myFeatureBoundaries, nodeidx, "featureboundaries", time, 0);
373  myField = 0;
374  if (true)
375  graph->evalOpParm(myField, nodeidx, "field", time, 0);
376  myGlobalWeight = 0.1;
377  if (true)
378  graph->evalOpParm(myGlobalWeight, nodeidx, "globalweight", time, 0);
379  myGlobalMask = ""_UTsh;
380  if (true && ( (true&&!(((int64(getField())==1)))) ) )
381  graph->evalOpParm(myGlobalMask, nodeidx, "globalmask", time, 0);
382  mySymmetryAlignment = 1;
383  if (true && ( (true&&!(((int64(getField())==1)))) ) )
384  graph->evalOpParm(mySymmetryAlignment, nodeidx, "symmetryalignment", time, 0);
385  myCurvature = true;
386  if (true && ( (true&&!(((int64(getField())==1)))) ) )
387  graph->evalOpParm(myCurvature, nodeidx, "curvature", time, 0);
388  myLocalCurvatureWeight = 1;
389  if (true && ( (true&&!(((int64(getField())==1))||((getCurvature()==0)))) ) )
390  graph->evalOpParm(myLocalCurvatureWeight, nodeidx, "localcurvatureweight", time, 0);
391  myCurvatureMaskAttrib = ""_UTsh;
392  if (true && ( (true&&!(((int64(getField())==1))||((getCurvature()==0)))) ) )
393  graph->evalOpParm(myCurvatureMaskAttrib, nodeidx, "curvaturemaskattrib", time, 0);
394  myCurvatureRotation = 0;
395  if (true && ( (true&&!(((int64(getField())==1))||((getCurvature()==0)))) ) )
396  graph->evalOpParm(myCurvatureRotation, nodeidx, "curvaturerotation", time, 0);
397  myBoundary = true;
398  if (true && ( (true&&!(((int64(getField())==1)))) ) )
399  graph->evalOpParm(myBoundary, nodeidx, "boundary", time, 0);
400  myBoundaryMode = 0;
401  if (true && ( (true&&!(((int64(getField())==1))||((getBoundary()==0)))) ) )
402  graph->evalOpParm(myBoundaryMode, nodeidx, "boundarymode", time, 0);
403  myLocalBoundaryWeight = 1;
404  if (true && ( (true&&!(((int64(getField())==1))||((getBoundary()==0)))) ) )
405  graph->evalOpParm(myLocalBoundaryWeight, nodeidx, "localboundaryweight", time, 0);
406  myBoundaryMaskAttrib = ""_UTsh;
407  if (true && ( (true&&!(((int64(getField())==1))||((getBoundary()==0)))) ) )
408  graph->evalOpParm(myBoundaryMaskAttrib, nodeidx, "boundarymaskattrib", time, 0);
409  myBoundaryRotation = 0;
410  if (true && ( (true&&!(((int64(getField())==1))||((getBoundary()==0)))) ) )
411  graph->evalOpParm(myBoundaryRotation, nodeidx, "boundaryrotation", time, 0);
412  myGuide = true;
413  if (true && ( (true&&!(((int64(getField())==1)))) ) )
414  graph->evalOpParm(myGuide, nodeidx, "guide", time, 0);
415  myGuideMode = 0;
416  if (true && ( (true&&!(((int64(getField())==1))||((getGuide()==0)))) ) )
417  graph->evalOpParm(myGuideMode, nodeidx, "guidemode", time, 0);
418  myLocalGuideWeight = 1;
419  if (true && ( (true&&!(((int64(getField())==1))||((getGuide()==0)))) ) )
420  graph->evalOpParm(myLocalGuideWeight, nodeidx, "localguideweight", time, 0);
421  myGuideMaskAttrib = ""_UTsh;
422  if (true && ( (true&&!(((int64(getField())==1))||((getGuide()==0)))) ) )
423  graph->evalOpParm(myGuideMaskAttrib, nodeidx, "guidemaskattrib", time, 0);
424  myGuideAttrib = ""_UTsh;
425  if (true && ( (true&&!(((int64(getField())==1))||((getGuide()==0)))) ) )
426  graph->evalOpParm(myGuideAttrib, nodeidx, "guideattrib", time, 0);
427 
428  }
429 
430 
431  void loadFromOpSubclass(const LoadParms &loadparms) override
432  {
433  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
434  }
435 
436 
437  void copyFrom(const OP_NodeParms *src) override
438  {
439  *this = *((const SOP_QuadRemeshParms *)src);
440  }
441 
442  template <typename T>
443  void
444  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
445  {
446  if (idx.size() < 1)
447  return;
448  UT_ASSERT(idx.size() == instance.size()+1);
449  if (idx.size() != instance.size()+1)
450  return;
451  switch (idx[0])
452  {
453  case 0:
454  coerceValue(value, myGroup);
455  break;
456  case 1:
457  coerceValue(value, myDecimation);
458  break;
459  case 2:
460  coerceValue(value, myDecimationLevel);
461  break;
462  case 3:
463  coerceValue(value, myOutput);
464  break;
465  case 4:
466  coerceValue(value, myResolutionMode);
467  break;
468  case 5:
469  coerceValue(value, myTargetQuadCount);
470  break;
471  case 6:
472  coerceValue(value, myTargetQuadArea);
473  break;
474  case 7:
475  coerceValue(value, myTargetTolerance);
476  break;
477  case 8:
478  coerceValue(value, myResolutionScale);
479  break;
480  case 9:
481  coerceValue(value, myResolutionSource);
482  break;
483  case 10:
484  coerceValue(value, myTriangleArea);
485  break;
486  case 11:
487  coerceValue(value, mySymmetryCenter);
488  break;
489  case 12:
490  coerceValue(value, myXAxis);
491  break;
492  case 13:
493  coerceValue(value, myXDirection);
494  break;
495  case 14:
496  coerceValue(value, myYAxis);
497  break;
498  case 15:
499  coerceValue(value, myYDirection);
500  break;
501  case 16:
502  coerceValue(value, myZAxis);
503  break;
504  case 17:
505  coerceValue(value, myZDirection);
506  break;
507  case 18:
508  coerceValue(value, myMirrorOutput);
509  break;
510  case 19:
511  coerceValue(value, myEnableConsolidateSeam);
512  break;
513  case 20:
514  coerceValue(value, myConsolidateSeam);
515  break;
516  case 21:
517  coerceValue(value, myFeatureBoundaries);
518  break;
519  case 22:
520  coerceValue(value, myField);
521  break;
522  case 23:
523  coerceValue(value, myGlobalWeight);
524  break;
525  case 24:
526  coerceValue(value, myGlobalMask);
527  break;
528  case 25:
529  coerceValue(value, mySymmetryAlignment);
530  break;
531  case 26:
532  coerceValue(value, myCurvature);
533  break;
534  case 27:
535  coerceValue(value, myLocalCurvatureWeight);
536  break;
537  case 28:
538  coerceValue(value, myCurvatureMaskAttrib);
539  break;
540  case 29:
541  coerceValue(value, myCurvatureRotation);
542  break;
543  case 30:
544  coerceValue(value, myBoundary);
545  break;
546  case 31:
547  coerceValue(value, myBoundaryMode);
548  break;
549  case 32:
550  coerceValue(value, myLocalBoundaryWeight);
551  break;
552  case 33:
553  coerceValue(value, myBoundaryMaskAttrib);
554  break;
555  case 34:
556  coerceValue(value, myBoundaryRotation);
557  break;
558  case 35:
559  coerceValue(value, myGuide);
560  break;
561  case 36:
562  coerceValue(value, myGuideMode);
563  break;
564  case 37:
565  coerceValue(value, myLocalGuideWeight);
566  break;
567  case 38:
568  coerceValue(value, myGuideMaskAttrib);
569  break;
570  case 39:
571  coerceValue(value, myGuideAttrib);
572  break;
573 
574  }
575  }
576 
577  bool isParmColorRamp(exint idx) const override
578  {
579  switch (idx)
580  {
581 
582  }
583  return false;
584  }
585 
586  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
587  { doGetParmValue(idx, instance, value); }
588  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
589  { doGetParmValue(idx, instance, value); }
590  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
591  { doGetParmValue(idx, instance, value); }
592  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
593  { doGetParmValue(idx, instance, value); }
594  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
595  { doGetParmValue(idx, instance, value); }
596  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
597  { doGetParmValue(idx, instance, value); }
598  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
599  { doGetParmValue(idx, instance, value); }
600  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
601  { doGetParmValue(idx, instance, value); }
602  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
603  { doGetParmValue(idx, instance, value); }
604  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
605  { doGetParmValue(idx, instance, value); }
606  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
607  { doGetParmValue(idx, instance, value); }
608 
609  template <typename T>
610  void
611  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
612  {
613  if (idx.size() < 1)
614  return;
615  UT_ASSERT(idx.size() == instance.size()+1);
616  if (idx.size() != instance.size()+1)
617  return;
618  switch (idx[0])
619  {
620  case 0:
621  coerceValue(myGroup, ( ( value ) ));
622  break;
623  case 1:
624  coerceValue(myDecimation, ( ( value ) ));
625  break;
626  case 2:
627  coerceValue(myDecimationLevel, clampMinValue(1, clampMaxValue(12, value ) ));
628  break;
629  case 3:
630  coerceValue(myOutput, clampMinValue(0, clampMaxValue(1, value ) ));
631  break;
632  case 4:
633  coerceValue(myResolutionMode, clampMinValue(0, clampMaxValue(4, value ) ));
634  break;
635  case 5:
636  coerceValue(myTargetQuadCount, clampMinValue(100, ( value ) ));
637  break;
638  case 6:
639  coerceValue(myTargetQuadArea, clampMinValue(0, ( value ) ));
640  break;
641  case 7:
642  coerceValue(myTargetTolerance, clampMinValue(0, ( value ) ));
643  break;
644  case 8:
645  coerceValue(myResolutionScale, ( ( value ) ));
646  break;
647  case 9:
648  coerceValue(myResolutionSource, clampMinValue(0, clampMaxValue(1, value ) ));
649  break;
650  case 10:
651  coerceValue(myTriangleArea, ( ( value ) ));
652  break;
653  case 11:
654  coerceValue(mySymmetryCenter, ( ( value ) ));
655  break;
656  case 12:
657  coerceValue(myXAxis, ( ( value ) ));
658  break;
659  case 13:
660  coerceValue(myXDirection, clampMinValue(0, clampMaxValue(1, value ) ));
661  break;
662  case 14:
663  coerceValue(myYAxis, ( ( value ) ));
664  break;
665  case 15:
666  coerceValue(myYDirection, clampMinValue(0, clampMaxValue(1, value ) ));
667  break;
668  case 16:
669  coerceValue(myZAxis, ( ( value ) ));
670  break;
671  case 17:
672  coerceValue(myZDirection, clampMinValue(0, clampMaxValue(1, value ) ));
673  break;
674  case 18:
675  coerceValue(myMirrorOutput, ( ( value ) ));
676  break;
677  case 19:
678  coerceValue(myEnableConsolidateSeam, ( ( value ) ));
679  break;
680  case 20:
681  coerceValue(myConsolidateSeam, clampMinValue(0, ( value ) ));
682  break;
683  case 21:
684  coerceValue(myFeatureBoundaries, ( ( value ) ));
685  break;
686  case 22:
687  coerceValue(myField, clampMinValue(0, clampMaxValue(1, value ) ));
688  break;
689  case 23:
690  coerceValue(myGlobalWeight, clampMinValue(0, ( value ) ));
691  break;
692  case 24:
693  coerceValue(myGlobalMask, ( ( value ) ));
694  break;
695  case 25:
696  coerceValue(mySymmetryAlignment, clampMinValue(0, ( value ) ));
697  break;
698  case 26:
699  coerceValue(myCurvature, ( ( value ) ));
700  break;
701  case 27:
702  coerceValue(myLocalCurvatureWeight, clampMinValue(0, ( value ) ));
703  break;
704  case 28:
705  coerceValue(myCurvatureMaskAttrib, ( ( value ) ));
706  break;
707  case 29:
708  coerceValue(myCurvatureRotation, ( ( value ) ));
709  break;
710  case 30:
711  coerceValue(myBoundary, ( ( value ) ));
712  break;
713  case 31:
714  coerceValue(myBoundaryMode, clampMinValue(0, clampMaxValue(1, value ) ));
715  break;
716  case 32:
717  coerceValue(myLocalBoundaryWeight, clampMinValue(0, ( value ) ));
718  break;
719  case 33:
720  coerceValue(myBoundaryMaskAttrib, ( ( value ) ));
721  break;
722  case 34:
723  coerceValue(myBoundaryRotation, ( ( value ) ));
724  break;
725  case 35:
726  coerceValue(myGuide, ( ( value ) ));
727  break;
728  case 36:
729  coerceValue(myGuideMode, clampMinValue(0, clampMaxValue(1, value ) ));
730  break;
731  case 37:
732  coerceValue(myLocalGuideWeight, clampMinValue(0, ( value ) ));
733  break;
734  case 38:
735  coerceValue(myGuideMaskAttrib, ( ( value ) ));
736  break;
737  case 39:
738  coerceValue(myGuideAttrib, ( ( value ) ));
739  break;
740 
741  }
742  }
743 
744  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
745  { doSetParmValue(idx, instance, value); }
746  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
747  { doSetParmValue(idx, instance, value); }
748  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
749  { doSetParmValue(idx, instance, value); }
750  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
751  { doSetParmValue(idx, instance, value); }
752  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
753  { doSetParmValue(idx, instance, value); }
754  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
755  { doSetParmValue(idx, instance, value); }
756  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
757  { doSetParmValue(idx, instance, value); }
758  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
759  { doSetParmValue(idx, instance, value); }
760  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
761  { doSetParmValue(idx, instance, value); }
762  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
763  { doSetParmValue(idx, instance, value); }
764  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
765  { doSetParmValue(idx, instance, value); }
766 
767  exint getNestNumParms(TempIndex idx) const override
768  {
769  if (idx.size() == 0)
770  return 40;
771  switch (idx[0])
772  {
773 
774  }
775  // Invalid
776  return 0;
777  }
778 
779  const char *getNestParmName(TempIndex fieldnum) const override
780  {
781  if (fieldnum.size() < 1)
782  return 0;
783  switch (fieldnum[0])
784  {
785  case 0:
786  return "group";
787  case 1:
788  return "decimation";
789  case 2:
790  return "decimationlevel";
791  case 3:
792  return "output";
793  case 4:
794  return "resolution";
795  case 5:
796  return "targetquadcount";
797  case 6:
798  return "targetquadarea";
799  case 7:
800  return "targettolerance";
801  case 8:
802  return "resolutionscale";
803  case 9:
804  return "resolutionsource";
805  case 10:
806  return "trianglearea";
807  case 11:
808  return "symmetrycenter";
809  case 12:
810  return "xaxis";
811  case 13:
812  return "xdirection";
813  case 14:
814  return "yaxis";
815  case 15:
816  return "ydirection";
817  case 16:
818  return "zaxis";
819  case 17:
820  return "zdirection";
821  case 18:
822  return "mirroroutput";
823  case 19:
824  return "consolidatepts";
825  case 20:
826  return "consolidatetol";
827  case 21:
828  return "featureboundaries";
829  case 22:
830  return "field";
831  case 23:
832  return "globalweight";
833  case 24:
834  return "globalmask";
835  case 25:
836  return "symmetryalignment";
837  case 26:
838  return "curvature";
839  case 27:
840  return "localcurvatureweight";
841  case 28:
842  return "curvaturemaskattrib";
843  case 29:
844  return "curvaturerotation";
845  case 30:
846  return "boundary";
847  case 31:
848  return "boundarymode";
849  case 32:
850  return "localboundaryweight";
851  case 33:
852  return "boundarymaskattrib";
853  case 34:
854  return "boundaryrotation";
855  case 35:
856  return "guide";
857  case 36:
858  return "guidemode";
859  case 37:
860  return "localguideweight";
861  case 38:
862  return "guidemaskattrib";
863  case 39:
864  return "guideattrib";
865 
866  }
867  return 0;
868  }
869 
870  ParmType getNestParmType(TempIndex fieldnum) const override
871  {
872  if (fieldnum.size() < 1)
873  return PARM_UNSUPPORTED;
874  switch (fieldnum[0])
875  {
876  case 0:
877  return PARM_STRING;
878  case 1:
879  return PARM_INTEGER;
880  case 2:
881  return PARM_INTEGER;
882  case 3:
883  return PARM_INTEGER;
884  case 4:
885  return PARM_INTEGER;
886  case 5:
887  return PARM_INTEGER;
888  case 6:
889  return PARM_FLOAT;
890  case 7:
891  return PARM_FLOAT;
892  case 8:
893  return PARM_INTEGER;
894  case 9:
895  return PARM_INTEGER;
896  case 10:
897  return PARM_FLOAT;
898  case 11:
899  return PARM_VECTOR3;
900  case 12:
901  return PARM_INTEGER;
902  case 13:
903  return PARM_INTEGER;
904  case 14:
905  return PARM_INTEGER;
906  case 15:
907  return PARM_INTEGER;
908  case 16:
909  return PARM_INTEGER;
910  case 17:
911  return PARM_INTEGER;
912  case 18:
913  return PARM_INTEGER;
914  case 19:
915  return PARM_INTEGER;
916  case 20:
917  return PARM_FLOAT;
918  case 21:
919  return PARM_INTEGER;
920  case 22:
921  return PARM_INTEGER;
922  case 23:
923  return PARM_FLOAT;
924  case 24:
925  return PARM_STRING;
926  case 25:
927  return PARM_FLOAT;
928  case 26:
929  return PARM_INTEGER;
930  case 27:
931  return PARM_FLOAT;
932  case 28:
933  return PARM_STRING;
934  case 29:
935  return PARM_FLOAT;
936  case 30:
937  return PARM_INTEGER;
938  case 31:
939  return PARM_INTEGER;
940  case 32:
941  return PARM_FLOAT;
942  case 33:
943  return PARM_STRING;
944  case 34:
945  return PARM_FLOAT;
946  case 35:
947  return PARM_INTEGER;
948  case 36:
949  return PARM_INTEGER;
950  case 37:
951  return PARM_FLOAT;
952  case 38:
953  return PARM_STRING;
954  case 39:
955  return PARM_STRING;
956 
957  }
958  return PARM_UNSUPPORTED;
959  }
960 
961  // Boiler plate to load individual types.
962  static void loadData(UT_IStream &is, int64 &v)
963  { is.bread(&v, 1); }
964  static void loadData(UT_IStream &is, bool &v)
965  { int64 iv; is.bread(&iv, 1); v = iv; }
966  static void loadData(UT_IStream &is, fpreal64 &v)
967  { is.bread<fpreal64>(&v, 1); }
968  static void loadData(UT_IStream &is, UT_Vector2D &v)
969  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
970  static void loadData(UT_IStream &is, UT_Vector3D &v)
971  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
972  is.bread<fpreal64>(&v.z(), 1); }
973  static void loadData(UT_IStream &is, UT_Vector4D &v)
974  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
975  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
976  static void loadData(UT_IStream &is, UT_Matrix2D &v)
977  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
978  static void loadData(UT_IStream &is, UT_Matrix3D &v)
979  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
980  static void loadData(UT_IStream &is, UT_Matrix4D &v)
981  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
982  static void loadData(UT_IStream &is, UT_Vector2I &v)
983  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
984  static void loadData(UT_IStream &is, UT_Vector3I &v)
985  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
986  is.bread<int64>(&v.z(), 1); }
987  static void loadData(UT_IStream &is, UT_Vector4I &v)
988  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
989  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
991  { is.bread(v); }
993  { UT_StringHolder rampdata;
994  loadData(is, rampdata);
995  if (rampdata.isstring())
996  {
997  v.reset(new UT_Ramp());
998  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
999  v->load(istr);
1000  }
1001  else v.reset();
1002  }
1005  loadData(is, data);
1006  if (data.isstring())
1007  {
1008  // Find the data type.
1009  const char *colon = UT_StringWrap(data).findChar(':');
1010  if (colon)
1011  {
1012  int typelen = colon - data.buffer();
1014  type.strncpy(data.buffer(), typelen);
1015  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
1016 
1017  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
1018  }
1019  }
1020  else v.reset();
1021  }
1022 
1023  static void saveData(std::ostream &os, int64 v)
1024  { UTwrite(os, &v); }
1025  static void saveData(std::ostream &os, bool v)
1026  { int64 iv = v; UTwrite(os, &iv); }
1027  static void saveData(std::ostream &os, fpreal64 v)
1028  { UTwrite<fpreal64>(os, &v); }
1029  static void saveData(std::ostream &os, UT_Vector2D v)
1030  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
1031  static void saveData(std::ostream &os, UT_Vector3D v)
1032  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1033  UTwrite<fpreal64>(os, &v.z()); }
1034  static void saveData(std::ostream &os, UT_Vector4D v)
1035  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1036  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
1037  static void saveData(std::ostream &os, UT_Matrix2D v)
1039  static void saveData(std::ostream &os, UT_Matrix3D v)
1041  static void saveData(std::ostream &os, UT_Matrix4D v)
1043  static void saveData(std::ostream &os, UT_StringHolder s)
1044  { UT_StringWrap(s).saveBinary(os); }
1045  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
1047  UT_OStringStream ostr;
1048  if (s) s->save(ostr);
1049  result = ostr.str();
1050  saveData(os, result);
1051  }
1052  static void saveData(std::ostream &os, PRM_DataItemHandle s)
1054  UT_OStringStream ostr;
1055  if (s)
1056  {
1057  ostr << s->getDataTypeToken();
1058  ostr << ":";
1059  s->saveBinary(ostr);
1060  }
1061  result = ostr.str();
1062  saveData(os, result);
1063  }
1064 
1065 
1066  void save(std::ostream &os) const
1067  {
1068  int32 v = version();
1069  UTwrite(os, &v);
1070  saveData(os, myGroup);
1071  saveData(os, myDecimation);
1072  saveData(os, myDecimationLevel);
1073  saveData(os, myOutput);
1074  saveData(os, myResolutionMode);
1075  saveData(os, myTargetQuadCount);
1076  saveData(os, myTargetQuadArea);
1077  saveData(os, myTargetTolerance);
1078  saveData(os, myResolutionScale);
1079  saveData(os, myResolutionSource);
1080  saveData(os, myTriangleArea);
1081  saveData(os, mySymmetryCenter);
1082  saveData(os, myXAxis);
1083  saveData(os, myXDirection);
1084  saveData(os, myYAxis);
1085  saveData(os, myYDirection);
1086  saveData(os, myZAxis);
1087  saveData(os, myZDirection);
1088  saveData(os, myMirrorOutput);
1089  saveData(os, myEnableConsolidateSeam);
1090  saveData(os, myConsolidateSeam);
1091  saveData(os, myFeatureBoundaries);
1092  saveData(os, myField);
1093  saveData(os, myGlobalWeight);
1094  saveData(os, myGlobalMask);
1095  saveData(os, mySymmetryAlignment);
1096  saveData(os, myCurvature);
1097  saveData(os, myLocalCurvatureWeight);
1098  saveData(os, myCurvatureMaskAttrib);
1099  saveData(os, myCurvatureRotation);
1100  saveData(os, myBoundary);
1101  saveData(os, myBoundaryMode);
1102  saveData(os, myLocalBoundaryWeight);
1103  saveData(os, myBoundaryMaskAttrib);
1104  saveData(os, myBoundaryRotation);
1105  saveData(os, myGuide);
1106  saveData(os, myGuideMode);
1107  saveData(os, myLocalGuideWeight);
1108  saveData(os, myGuideMaskAttrib);
1109  saveData(os, myGuideAttrib);
1110 
1111  }
1112 
1113  bool load(UT_IStream &is)
1114  {
1115  int32 v;
1116  is.bread(&v, 1);
1117  if (version() != v)
1118  {
1119  // Fail incompatible versions
1120  return false;
1121  }
1122  loadData(is, myGroup);
1123  loadData(is, myDecimation);
1124  loadData(is, myDecimationLevel);
1125  loadData(is, myOutput);
1126  loadData(is, myResolutionMode);
1127  loadData(is, myTargetQuadCount);
1128  loadData(is, myTargetQuadArea);
1129  loadData(is, myTargetTolerance);
1130  loadData(is, myResolutionScale);
1131  loadData(is, myResolutionSource);
1132  loadData(is, myTriangleArea);
1133  loadData(is, mySymmetryCenter);
1134  loadData(is, myXAxis);
1135  loadData(is, myXDirection);
1136  loadData(is, myYAxis);
1137  loadData(is, myYDirection);
1138  loadData(is, myZAxis);
1139  loadData(is, myZDirection);
1140  loadData(is, myMirrorOutput);
1141  loadData(is, myEnableConsolidateSeam);
1142  loadData(is, myConsolidateSeam);
1143  loadData(is, myFeatureBoundaries);
1144  loadData(is, myField);
1145  loadData(is, myGlobalWeight);
1146  loadData(is, myGlobalMask);
1147  loadData(is, mySymmetryAlignment);
1148  loadData(is, myCurvature);
1149  loadData(is, myLocalCurvatureWeight);
1150  loadData(is, myCurvatureMaskAttrib);
1151  loadData(is, myCurvatureRotation);
1152  loadData(is, myBoundary);
1153  loadData(is, myBoundaryMode);
1154  loadData(is, myLocalBoundaryWeight);
1155  loadData(is, myBoundaryMaskAttrib);
1156  loadData(is, myBoundaryRotation);
1157  loadData(is, myGuide);
1158  loadData(is, myGuideMode);
1159  loadData(is, myLocalGuideWeight);
1160  loadData(is, myGuideMaskAttrib);
1161  loadData(is, myGuideAttrib);
1162 
1163  return true;
1164  }
1165 
1166  const UT_StringHolder & getGroup() const { return myGroup; }
1167  void setGroup(const UT_StringHolder & val) { myGroup = val; }
1169  {
1170  SOP_Node *thissop = cookparms.getNode();
1171  if (!thissop) return getGroup();
1173  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
1174  return result;
1175  }
1176  bool getDecimation() const { return myDecimation; }
1177  void setDecimation(bool val) { myDecimation = val; }
1178  bool opDecimation(const SOP_NodeVerb::CookParms &cookparms) const
1179  {
1180  SOP_Node *thissop = cookparms.getNode();
1181  if (!thissop) return getDecimation();
1182  bool result;
1183  OP_Utils::evalOpParm(result, thissop, "decimation", cookparms.getCookTime(), 0);
1184  return result;
1185  }
1186  int64 getDecimationLevel() const { return myDecimationLevel; }
1187  void setDecimationLevel(int64 val) { myDecimationLevel = val; }
1189  {
1190  SOP_Node *thissop = cookparms.getNode();
1191  if (!thissop) return getDecimationLevel();
1192  int64 result;
1193  OP_Utils::evalOpParm(result, thissop, "decimationlevel", cookparms.getCookTime(), 0);
1194  return result;
1195  }
1196  Output getOutput() const { return Output(myOutput); }
1197  void setOutput(Output val) { myOutput = int64(val); }
1198  Output opOutput(const SOP_NodeVerb::CookParms &cookparms) const
1199  {
1200  SOP_Node *thissop = cookparms.getNode();
1201  if (!thissop) return getOutput();
1202  int64 result;
1203  OP_Utils::evalOpParm(result, thissop, "output", cookparms.getCookTime(), 0);
1204  return Output(result);
1205  }
1206  ResolutionMode getResolutionMode() const { return ResolutionMode(myResolutionMode); }
1207  void setResolutionMode(ResolutionMode val) { myResolutionMode = int64(val); }
1209  {
1210  SOP_Node *thissop = cookparms.getNode();
1211  if (!thissop) return getResolutionMode();
1212  int64 result;
1213  OP_Utils::evalOpParm(result, thissop, "resolution", cookparms.getCookTime(), 0);
1214  return ResolutionMode(result);
1215  }
1216  int64 getTargetQuadCount() const { return myTargetQuadCount; }
1217  void setTargetQuadCount(int64 val) { myTargetQuadCount = val; }
1219  {
1220  SOP_Node *thissop = cookparms.getNode();
1221  if (!thissop) return getTargetQuadCount();
1222  int64 result;
1223  OP_Utils::evalOpParm(result, thissop, "targetquadcount", cookparms.getCookTime(), 0);
1224  return result;
1225  }
1226  fpreal64 getTargetQuadArea() const { return myTargetQuadArea; }
1227  void setTargetQuadArea(fpreal64 val) { myTargetQuadArea = val; }
1229  {
1230  SOP_Node *thissop = cookparms.getNode();
1231  if (!thissop) return getTargetQuadArea();
1232  fpreal64 result;
1233  OP_Utils::evalOpParm(result, thissop, "targetquadarea", cookparms.getCookTime(), 0);
1234  return result;
1235  }
1236  fpreal64 getTargetTolerance() const { return myTargetTolerance; }
1237  void setTargetTolerance(fpreal64 val) { myTargetTolerance = val; }
1239  {
1240  SOP_Node *thissop = cookparms.getNode();
1241  if (!thissop) return getTargetTolerance();
1242  fpreal64 result;
1243  OP_Utils::evalOpParm(result, thissop, "targettolerance", cookparms.getCookTime(), 0);
1244  return result;
1245  }
1246  int64 getResolutionScale() const { return myResolutionScale; }
1247  void setResolutionScale(int64 val) { myResolutionScale = val; }
1249  {
1250  SOP_Node *thissop = cookparms.getNode();
1251  if (!thissop) return getResolutionScale();
1252  int64 result;
1253  OP_Utils::evalOpParm(result, thissop, "resolutionscale", cookparms.getCookTime(), 0);
1254  return result;
1255  }
1256  ResolutionSource getResolutionSource() const { return ResolutionSource(myResolutionSource); }
1257  void setResolutionSource(ResolutionSource val) { myResolutionSource = int64(val); }
1259  {
1260  SOP_Node *thissop = cookparms.getNode();
1261  if (!thissop) return getResolutionSource();
1262  int64 result;
1263  OP_Utils::evalOpParm(result, thissop, "resolutionsource", cookparms.getCookTime(), 0);
1264  return ResolutionSource(result);
1265  }
1266  fpreal64 getTriangleArea() const { return myTriangleArea; }
1267  void setTriangleArea(fpreal64 val) { myTriangleArea = val; }
1269  {
1270  SOP_Node *thissop = cookparms.getNode();
1271  if (!thissop) return getTriangleArea();
1272  fpreal64 result;
1273  OP_Utils::evalOpParm(result, thissop, "trianglearea", cookparms.getCookTime(), 0);
1274  return result;
1275  }
1276  UT_Vector3D getSymmetryCenter() const { return mySymmetryCenter; }
1277  void setSymmetryCenter(UT_Vector3D val) { mySymmetryCenter = val; }
1279  {
1280  SOP_Node *thissop = cookparms.getNode();
1281  if (!thissop) return getSymmetryCenter();
1283  OP_Utils::evalOpParm(result, thissop, "symmetrycenter", cookparms.getCookTime(), 0);
1284  return result;
1285  }
1286  bool getXAxis() const { return myXAxis; }
1287  void setXAxis(bool val) { myXAxis = val; }
1288  bool opXAxis(const SOP_NodeVerb::CookParms &cookparms) const
1289  {
1290  SOP_Node *thissop = cookparms.getNode();
1291  if (!thissop) return getXAxis();
1292  bool result;
1293  OP_Utils::evalOpParm(result, thissop, "xaxis", cookparms.getCookTime(), 0);
1294  return result;
1295  }
1296  XDirection getXDirection() const { return XDirection(myXDirection); }
1297  void setXDirection(XDirection val) { myXDirection = int64(val); }
1299  {
1300  SOP_Node *thissop = cookparms.getNode();
1301  if (!thissop) return getXDirection();
1302  int64 result;
1303  OP_Utils::evalOpParm(result, thissop, "xdirection", cookparms.getCookTime(), 0);
1304  return XDirection(result);
1305  }
1306  bool getYAxis() const { return myYAxis; }
1307  void setYAxis(bool val) { myYAxis = val; }
1308  bool opYAxis(const SOP_NodeVerb::CookParms &cookparms) const
1309  {
1310  SOP_Node *thissop = cookparms.getNode();
1311  if (!thissop) return getYAxis();
1312  bool result;
1313  OP_Utils::evalOpParm(result, thissop, "yaxis", cookparms.getCookTime(), 0);
1314  return result;
1315  }
1316  YDirection getYDirection() const { return YDirection(myYDirection); }
1317  void setYDirection(YDirection val) { myYDirection = int64(val); }
1319  {
1320  SOP_Node *thissop = cookparms.getNode();
1321  if (!thissop) return getYDirection();
1322  int64 result;
1323  OP_Utils::evalOpParm(result, thissop, "ydirection", cookparms.getCookTime(), 0);
1324  return YDirection(result);
1325  }
1326  bool getZAxis() const { return myZAxis; }
1327  void setZAxis(bool val) { myZAxis = val; }
1328  bool opZAxis(const SOP_NodeVerb::CookParms &cookparms) const
1329  {
1330  SOP_Node *thissop = cookparms.getNode();
1331  if (!thissop) return getZAxis();
1332  bool result;
1333  OP_Utils::evalOpParm(result, thissop, "zaxis", cookparms.getCookTime(), 0);
1334  return result;
1335  }
1336  ZDirection getZDirection() const { return ZDirection(myZDirection); }
1337  void setZDirection(ZDirection val) { myZDirection = int64(val); }
1339  {
1340  SOP_Node *thissop = cookparms.getNode();
1341  if (!thissop) return getZDirection();
1342  int64 result;
1343  OP_Utils::evalOpParm(result, thissop, "zdirection", cookparms.getCookTime(), 0);
1344  return ZDirection(result);
1345  }
1346  bool getMirrorOutput() const { return myMirrorOutput; }
1347  void setMirrorOutput(bool val) { myMirrorOutput = val; }
1348  bool opMirrorOutput(const SOP_NodeVerb::CookParms &cookparms) const
1349  {
1350  SOP_Node *thissop = cookparms.getNode();
1351  if (!thissop) return getMirrorOutput();
1352  bool result;
1353  OP_Utils::evalOpParm(result, thissop, "mirroroutput", cookparms.getCookTime(), 0);
1354  return result;
1355  }
1356  bool getEnableConsolidateSeam() const { return myEnableConsolidateSeam; }
1357  void setEnableConsolidateSeam(bool val) { myEnableConsolidateSeam = val; }
1359  {
1360  SOP_Node *thissop = cookparms.getNode();
1361  if (!thissop) return getEnableConsolidateSeam();
1362  bool result;
1363  OP_Utils::evalOpParm(result, thissop, "consolidatepts", cookparms.getCookTime(), 0);
1364  return result;
1365  }
1366  fpreal64 getConsolidateSeam() const { return myConsolidateSeam; }
1367  void setConsolidateSeam(fpreal64 val) { myConsolidateSeam = val; }
1369  {
1370  SOP_Node *thissop = cookparms.getNode();
1371  if (!thissop) return getConsolidateSeam();
1372  fpreal64 result;
1373  OP_Utils::evalOpParm(result, thissop, "consolidatetol", cookparms.getCookTime(), 0);
1374  return result;
1375  }
1376  bool getFeatureBoundaries() const { return myFeatureBoundaries; }
1377  void setFeatureBoundaries(bool val) { myFeatureBoundaries = val; }
1378  bool opFeatureBoundaries(const SOP_NodeVerb::CookParms &cookparms) const
1379  {
1380  SOP_Node *thissop = cookparms.getNode();
1381  if (!thissop) return getFeatureBoundaries();
1382  bool result;
1383  OP_Utils::evalOpParm(result, thissop, "featureboundaries", cookparms.getCookTime(), 0);
1384  return result;
1385  }
1386  Field getField() const { return Field(myField); }
1387  void setField(Field val) { myField = int64(val); }
1388  Field opField(const SOP_NodeVerb::CookParms &cookparms) const
1389  {
1390  SOP_Node *thissop = cookparms.getNode();
1391  if (!thissop) return getField();
1392  int64 result;
1393  OP_Utils::evalOpParm(result, thissop, "field", cookparms.getCookTime(), 0);
1394  return Field(result);
1395  }
1396  fpreal64 getGlobalWeight() const { return myGlobalWeight; }
1397  void setGlobalWeight(fpreal64 val) { myGlobalWeight = val; }
1399  {
1400  SOP_Node *thissop = cookparms.getNode();
1401  if (!thissop) return getGlobalWeight();
1402  fpreal64 result;
1403  OP_Utils::evalOpParm(result, thissop, "globalweight", cookparms.getCookTime(), 0);
1404  return result;
1405  }
1406  const UT_StringHolder & getGlobalMask() const { return myGlobalMask; }
1407  void setGlobalMask(const UT_StringHolder & val) { myGlobalMask = val; }
1409  {
1410  SOP_Node *thissop = cookparms.getNode();
1411  if (!thissop) return getGlobalMask();
1413  OP_Utils::evalOpParm(result, thissop, "globalmask", cookparms.getCookTime(), 0);
1414  return result;
1415  }
1416  fpreal64 getSymmetryAlignment() const { return mySymmetryAlignment; }
1417  void setSymmetryAlignment(fpreal64 val) { mySymmetryAlignment = val; }
1419  {
1420  SOP_Node *thissop = cookparms.getNode();
1421  if (!thissop) return getSymmetryAlignment();
1422  fpreal64 result;
1423  OP_Utils::evalOpParm(result, thissop, "symmetryalignment", cookparms.getCookTime(), 0);
1424  return result;
1425  }
1426  bool getCurvature() const { return myCurvature; }
1427  void setCurvature(bool val) { myCurvature = val; }
1428  bool opCurvature(const SOP_NodeVerb::CookParms &cookparms) const
1429  {
1430  SOP_Node *thissop = cookparms.getNode();
1431  if (!thissop) return getCurvature();
1432  bool result;
1433  OP_Utils::evalOpParm(result, thissop, "curvature", cookparms.getCookTime(), 0);
1434  return result;
1435  }
1436  fpreal64 getLocalCurvatureWeight() const { return myLocalCurvatureWeight; }
1437  void setLocalCurvatureWeight(fpreal64 val) { myLocalCurvatureWeight = val; }
1439  {
1440  SOP_Node *thissop = cookparms.getNode();
1441  if (!thissop) return getLocalCurvatureWeight();
1442  fpreal64 result;
1443  OP_Utils::evalOpParm(result, thissop, "localcurvatureweight", cookparms.getCookTime(), 0);
1444  return result;
1445  }
1446  const UT_StringHolder & getCurvatureMaskAttrib() const { return myCurvatureMaskAttrib; }
1447  void setCurvatureMaskAttrib(const UT_StringHolder & val) { myCurvatureMaskAttrib = val; }
1449  {
1450  SOP_Node *thissop = cookparms.getNode();
1451  if (!thissop) return getCurvatureMaskAttrib();
1453  OP_Utils::evalOpParm(result, thissop, "curvaturemaskattrib", cookparms.getCookTime(), 0);
1454  return result;
1455  }
1456  fpreal64 getCurvatureRotation() const { return myCurvatureRotation; }
1457  void setCurvatureRotation(fpreal64 val) { myCurvatureRotation = val; }
1459  {
1460  SOP_Node *thissop = cookparms.getNode();
1461  if (!thissop) return getCurvatureRotation();
1462  fpreal64 result;
1463  OP_Utils::evalOpParm(result, thissop, "curvaturerotation", cookparms.getCookTime(), 0);
1464  return result;
1465  }
1466  bool getBoundary() const { return myBoundary; }
1467  void setBoundary(bool val) { myBoundary = val; }
1468  bool opBoundary(const SOP_NodeVerb::CookParms &cookparms) const
1469  {
1470  SOP_Node *thissop = cookparms.getNode();
1471  if (!thissop) return getBoundary();
1472  bool result;
1473  OP_Utils::evalOpParm(result, thissop, "boundary", cookparms.getCookTime(), 0);
1474  return result;
1475  }
1476  BoundaryMode getBoundaryMode() const { return BoundaryMode(myBoundaryMode); }
1477  void setBoundaryMode(BoundaryMode val) { myBoundaryMode = int64(val); }
1479  {
1480  SOP_Node *thissop = cookparms.getNode();
1481  if (!thissop) return getBoundaryMode();
1482  int64 result;
1483  OP_Utils::evalOpParm(result, thissop, "boundarymode", cookparms.getCookTime(), 0);
1484  return BoundaryMode(result);
1485  }
1486  fpreal64 getLocalBoundaryWeight() const { return myLocalBoundaryWeight; }
1487  void setLocalBoundaryWeight(fpreal64 val) { myLocalBoundaryWeight = val; }
1489  {
1490  SOP_Node *thissop = cookparms.getNode();
1491  if (!thissop) return getLocalBoundaryWeight();
1492  fpreal64 result;
1493  OP_Utils::evalOpParm(result, thissop, "localboundaryweight", cookparms.getCookTime(), 0);
1494  return result;
1495  }
1496  const UT_StringHolder & getBoundaryMaskAttrib() const { return myBoundaryMaskAttrib; }
1497  void setBoundaryMaskAttrib(const UT_StringHolder & val) { myBoundaryMaskAttrib = val; }
1499  {
1500  SOP_Node *thissop = cookparms.getNode();
1501  if (!thissop) return getBoundaryMaskAttrib();
1503  OP_Utils::evalOpParm(result, thissop, "boundarymaskattrib", cookparms.getCookTime(), 0);
1504  return result;
1505  }
1506  fpreal64 getBoundaryRotation() const { return myBoundaryRotation; }
1507  void setBoundaryRotation(fpreal64 val) { myBoundaryRotation = val; }
1509  {
1510  SOP_Node *thissop = cookparms.getNode();
1511  if (!thissop) return getBoundaryRotation();
1512  fpreal64 result;
1513  OP_Utils::evalOpParm(result, thissop, "boundaryrotation", cookparms.getCookTime(), 0);
1514  return result;
1515  }
1516  bool getGuide() const { return myGuide; }
1517  void setGuide(bool val) { myGuide = val; }
1518  bool opGuide(const SOP_NodeVerb::CookParms &cookparms) const
1519  {
1520  SOP_Node *thissop = cookparms.getNode();
1521  if (!thissop) return getGuide();
1522  bool result;
1523  OP_Utils::evalOpParm(result, thissop, "guide", cookparms.getCookTime(), 0);
1524  return result;
1525  }
1526  GuideMode getGuideMode() const { return GuideMode(myGuideMode); }
1527  void setGuideMode(GuideMode val) { myGuideMode = int64(val); }
1529  {
1530  SOP_Node *thissop = cookparms.getNode();
1531  if (!thissop) return getGuideMode();
1532  int64 result;
1533  OP_Utils::evalOpParm(result, thissop, "guidemode", cookparms.getCookTime(), 0);
1534  return GuideMode(result);
1535  }
1536  fpreal64 getLocalGuideWeight() const { return myLocalGuideWeight; }
1537  void setLocalGuideWeight(fpreal64 val) { myLocalGuideWeight = val; }
1539  {
1540  SOP_Node *thissop = cookparms.getNode();
1541  if (!thissop) return getLocalGuideWeight();
1542  fpreal64 result;
1543  OP_Utils::evalOpParm(result, thissop, "localguideweight", cookparms.getCookTime(), 0);
1544  return result;
1545  }
1546  const UT_StringHolder & getGuideMaskAttrib() const { return myGuideMaskAttrib; }
1547  void setGuideMaskAttrib(const UT_StringHolder & val) { myGuideMaskAttrib = val; }
1549  {
1550  SOP_Node *thissop = cookparms.getNode();
1551  if (!thissop) return getGuideMaskAttrib();
1553  OP_Utils::evalOpParm(result, thissop, "guidemaskattrib", cookparms.getCookTime(), 0);
1554  return result;
1555  }
1556  const UT_StringHolder & getGuideAttrib() const { return myGuideAttrib; }
1557  void setGuideAttrib(const UT_StringHolder & val) { myGuideAttrib = val; }
1559  {
1560  SOP_Node *thissop = cookparms.getNode();
1561  if (!thissop) return getGuideAttrib();
1563  OP_Utils::evalOpParm(result, thissop, "guideattrib", cookparms.getCookTime(), 0);
1564  return result;
1565  }
1566 
1567 private:
1568  UT_StringHolder myGroup;
1569  bool myDecimation;
1570  int64 myDecimationLevel;
1571  int64 myOutput;
1572  int64 myResolutionMode;
1573  int64 myTargetQuadCount;
1574  fpreal64 myTargetQuadArea;
1575  fpreal64 myTargetTolerance;
1576  int64 myResolutionScale;
1577  int64 myResolutionSource;
1578  fpreal64 myTriangleArea;
1579  UT_Vector3D mySymmetryCenter;
1580  bool myXAxis;
1581  int64 myXDirection;
1582  bool myYAxis;
1583  int64 myYDirection;
1584  bool myZAxis;
1585  int64 myZDirection;
1586  bool myMirrorOutput;
1587  bool myEnableConsolidateSeam;
1588  fpreal64 myConsolidateSeam;
1589  bool myFeatureBoundaries;
1590  int64 myField;
1591  fpreal64 myGlobalWeight;
1592  UT_StringHolder myGlobalMask;
1593  fpreal64 mySymmetryAlignment;
1594  bool myCurvature;
1595  fpreal64 myLocalCurvatureWeight;
1596  UT_StringHolder myCurvatureMaskAttrib;
1597  fpreal64 myCurvatureRotation;
1598  bool myBoundary;
1599  int64 myBoundaryMode;
1600  fpreal64 myLocalBoundaryWeight;
1601  UT_StringHolder myBoundaryMaskAttrib;
1602  fpreal64 myBoundaryRotation;
1603  bool myGuide;
1604  int64 myGuideMode;
1605  fpreal64 myLocalGuideWeight;
1606  UT_StringHolder myGuideMaskAttrib;
1607  UT_StringHolder myGuideAttrib;
1608 
1609 };
BoundaryMode getBoundaryMode() const
BoundaryMode opBoundaryMode(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D getSymmetryCenter() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
static void saveData(std::ostream &os, UT_Vector3D v)
static void saveData(std::ostream &os, UT_Vector4D v)
void setTargetQuadArea(fpreal64 val)
void setCurvatureRotation(fpreal64 val)
void setLocalCurvatureWeight(fpreal64 val)
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
fpreal64 opCurvatureRotation(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
void setSymmetryAlignment(fpreal64 val)
static void loadData(UT_IStream &is, UT_Vector3D &v)
void setYDirection(YDirection val)
const UT_StringHolder & getGlobalMask() const
bool opBoundary(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opGuideAttrib(const SOP_NodeVerb::CookParms &cookparms) const
YDirection opYDirection(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Matrix2D v)
fpreal64 opTargetQuadArea(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4D &v)
const UT_StringHolder & getGuideMaskAttrib() const
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
exint bread(int32 *buffer, exint asize=1)
XDirection opXDirection(const SOP_NodeVerb::CookParms &cookparms) const
GLboolean * data
Definition: glcorearb.h:131
int64 getResolutionScale() const
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
void setConsolidateSeam(fpreal64 val)
fpreal getTime() const
Definition: OP_Context.h:62
const UT_StringHolder & getGuideAttrib() const
bool opGuide(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getLocalBoundaryWeight() const
Output opOutput(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, bool &v)
void save(std::ostream &os) const
UT_StringHolder opGlobalMask(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, fpreal64 v)
fpreal64 getTriangleArea() const
fpreal64 opTargetTolerance(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opGuideMaskAttrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D opSymmetryCenter(const SOP_NodeVerb::CookParms &cookparms) const
const OP_Context & context() const
Definition: OP_NodeParms.h:97
bool opDecimation(const SOP_NodeVerb::CookParms &cookparms) const
void setOutput(Output val)
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
exint getNestNumParms(TempIndex idx) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
GLdouble s
Definition: glad.h:3009
bool opFeatureBoundaries(const SOP_NodeVerb::CookParms &cookparms) const
const char * getNestParmName(TempIndex fieldnum) const override
void setResolutionMode(ResolutionMode val)
An output stream object that owns its own string buffer storage.
fpreal64 getBoundaryRotation() const
static void loadData(UT_IStream &is, UT_Vector4I &v)
void setBoundaryMaskAttrib(const UT_StringHolder &val)
**But if you need a result
Definition: thread.h:613
void setGlobalWeight(fpreal64 val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
void setGuideAttrib(const UT_StringHolder &val)
static void saveData(std::ostream &os, UT_Matrix3D v)
exint nodeIdx() const
Definition: OP_NodeParms.h:95
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
fpreal64 getConsolidateSeam() const
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
fpreal64 getLocalCurvatureWeight() const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
fpreal64 getTargetTolerance() const
GuideMode getGuideMode() const
void setResolutionSource(ResolutionSource val)
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
ResolutionSource getResolutionSource() const
UT_StringHolder opCurvatureMaskAttrib(const SOP_NodeVerb::CookParms &cookparms) const
double fpreal64
Definition: SYS_Types.h:201
bool opCurvature(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
ParmType getNestParmType(TempIndex fieldnum) const override
void setCurvatureMaskAttrib(const UT_StringHolder &val)
int64 opResolutionScale(const SOP_NodeVerb::CookParms &cookparms) const
ResolutionMode opResolutionMode(const SOP_NodeVerb::CookParms &cookparms) const
int64 getTargetQuadCount() const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
ResolutionSource opResolutionSource(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opBoundaryRotation(const SOP_NodeVerb::CookParms &cookparms) const
bool opYAxis(const SOP_NodeVerb::CookParms &cookparms) const
Field opField(const SOP_NodeVerb::CookParms &cookparms) const
void setMirrorOutput(bool val)
YDirection getYDirection() const
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
bool opEnableConsolidateSeam(const SOP_NodeVerb::CookParms &cookparms) const
bool isParmColorRamp(exint idx) const override
fpreal64 opConsolidateSeam(const SOP_NodeVerb::CookParms &cookparms) const
exint length() const
fpreal64 opLocalCurvatureWeight(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
int64 opTargetQuadCount(const SOP_NodeVerb::CookParms &cookparms) const
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
bool opMirrorOutput(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE UT_StringHolder getToken(Output enum_value)
static void loadData(UT_IStream &is, int64 &v)
void loadFromOpSubclass(const LoadParms &loadparms) override
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
void setBoundaryRotation(fpreal64 val)
bool getFeatureBoundaries() const
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
bool load(UT_IStream &is)
bool getEnableConsolidateSeam() const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
bool opZAxis(const SOP_NodeVerb::CookParms &cookparms) const
void setGuideMode(GuideMode val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
void setLocalGuideWeight(fpreal64 val)
void setZDirection(ZDirection val)
int64 getDecimationLevel() const
long long int64
Definition: SYS_Types.h:116
ZDirection getZDirection() const
ZDirection opZDirection(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3T< fpreal64 > UT_Vector3D
static void saveData(std::ostream &os, int64 v)
void setGroup(const UT_StringHolder &val)
static void saveData(std::ostream &os, UT_StringHolder s)
void setGuideMaskAttrib(const UT_StringHolder &val)
void setDecimationLevel(int64 val)
static void saveData(std::ostream &os, UT_Vector2D v)
void setGlobalMask(const UT_StringHolder &val)
fpreal64 opSymmetryAlignment(const SOP_NodeVerb::CookParms &cookparms) const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
void setLocalBoundaryWeight(fpreal64 val)
static void loadData(UT_IStream &is, fpreal64 &v)
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
GT_API const UT_StringHolder version
const UT_StringHolder & getBoundaryMaskAttrib() const
static void loadData(UT_IStream &is, UT_Vector3I &v)
fpreal64 getCurvatureRotation() const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
void setTargetQuadCount(int64 val)
static void loadData(UT_IStream &is, UT_Vector2I &v)
static void saveData(std::ostream &os, UT_Matrix4D v)
int64 opDecimationLevel(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
static void saveData(std::ostream &os, PRM_DataItemHandle s)
ResolutionMode getResolutionMode() const
static void loadData(UT_IStream &is, UT_Matrix3D &v)
fpreal64 fpreal
Definition: SYS_Types.h:277
void setTargetTolerance(fpreal64 val)
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
void setFeatureBoundaries(bool val)
bool operator!=(const SOP_QuadRemeshParms &src) const
LeafData & operator=(const LeafData &)=delete
Utility class for containing a color ramp.
Definition: UT_Ramp.h:92
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
void setResolutionScale(int64 val)
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
bool opXAxis(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getGlobalWeight() const
void setXDirection(XDirection val)
GLuint GLfloat * val
Definition: glcorearb.h:1608
static void saveData(std::ostream &os, bool v)
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
#define SOP_API
Definition: SOP_API.h:10
void setBoundaryMode(BoundaryMode val)
const UT_StringHolder & getGroup() const
void copyFrom(const OP_NodeParms *src) override
static void loadData(UT_IStream &is, UT_Vector2D &v)
fpreal64 getSymmetryAlignment() const
XDirection getXDirection() const
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
GuideMode opGuideMode(const SOP_NodeVerb::CookParms &cookparms) const
void setEnableConsolidateSeam(bool val)
const char * findChar(int c) const
Definition: UT_String.h:1395
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
Definition: core.h:1131
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
GLboolean r
Definition: glcorearb.h:1222
fpreal64 opGlobalWeight(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
fpreal64 opTriangleArea(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix4D &v)
static void loadData(UT_IStream &is, UT_Matrix2D &v)
fpreal64 opLocalBoundaryWeight(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
bool operator==(const SOP_QuadRemeshParms &src) const
UT_StringHolder opBoundaryMaskAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setTriangleArea(fpreal64 val)
void setSymmetryCenter(UT_Vector3D val)
type
Definition: core.h:1059
static void loadData(UT_IStream &is, UT_StringHolder &v)
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:97
fpreal64 opLocalGuideWeight(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getTargetQuadArea() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
SYS_FORCE_INLINE bool isstring() const
fpreal64 getLocalGuideWeight() const
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
const UT_StringHolder & getCurvatureMaskAttrib() const
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663