HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_Remesh-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_Remesh_2_0Enums
24 {
25  enum class Sizing
26  {
27  UNIFORM = 0,
28  ADAPTIVE
29  };
30 
32  getToken(Sizing enum_value)
33  {
34  using namespace UT::Literal;
35  switch (enum_value) {
36  case Sizing::UNIFORM: return "uniform"_sh;
37  case Sizing::ADAPTIVE: return "adaptive"_sh;
38  default: UT_ASSERT(false); return ""_sh;
39  }
40  }
41 
42 }
43 
44 
46 {
47 public:
48  static int version() { return 1; }
49 
51  {
52  myGroup = ""_UTsh;
53  myHardEdges = ""_UTsh;
54  myHardPoints = ""_UTsh;
55  myHardenUVSeams = false;
56  myUVAttrib = "uv"_UTsh;
57  myIterations = 2;
58  mySmoothing = 0.1;
59  myInputPtsOnly = false;
60  myDetachFromNonGroup = false;
61  myRecomputeNormals = true;
62  mySizing = 0;
63  myTargetSize = 0.2;
64  myUseMaxSize = false;
65  myMaxSize = 0.1;
66  myUseMinSize = false;
67  myMinSize = .1;
68  myDensity = 2.0;
69  myGradation = 0.25;
70  myUseMeshSizeAttrib = false;
71  myMeshSizeAttrib = "targetmeshsize"_UTsh;
72  myUseMinSizeAttrib = false;
73  myMinSizeAttrib = "minmeshsize"_UTsh;
74  myUseMaxSizeAttrib = false;
75  myMaxSizeAttrib = "maxmeshsize"_UTsh;
76  myUseOutHardEdgesGroup = false;
77  myOutHardEdgesGroup = "hardedges"_UTsh;
78  myUseOutMeshSizeAttrib = false;
79  myOutMeshSizeAttrib = "meshsize"_UTsh;
80  myUseOutMeshQualityAttrib = false;
81  myOutMeshQualityAttrib = "meshquality"_UTsh;
82 
83  }
84 
85  explicit SOP_Remesh_2_0Parms(const SOP_Remesh_2_0Parms &) = default;
87  SOP_Remesh_2_0Parms(SOP_Remesh_2_0Parms &&) noexcept = default;
88  SOP_Remesh_2_0Parms &operator=(SOP_Remesh_2_0Parms &&) noexcept = default;
89 
90  ~SOP_Remesh_2_0Parms() override {}
91 
92  bool operator==(const SOP_Remesh_2_0Parms &src) const
93  {
94  if (myGroup != src.myGroup) return false;
95  if (myHardEdges != src.myHardEdges) return false;
96  if (myHardPoints != src.myHardPoints) return false;
97  if (myHardenUVSeams != src.myHardenUVSeams) return false;
98  if (myUVAttrib != src.myUVAttrib) return false;
99  if (myIterations != src.myIterations) return false;
100  if (mySmoothing != src.mySmoothing) return false;
101  if (myInputPtsOnly != src.myInputPtsOnly) return false;
102  if (myDetachFromNonGroup != src.myDetachFromNonGroup) return false;
103  if (myRecomputeNormals != src.myRecomputeNormals) return false;
104  if (mySizing != src.mySizing) return false;
105  if (myTargetSize != src.myTargetSize) return false;
106  if (myUseMaxSize != src.myUseMaxSize) return false;
107  if (myMaxSize != src.myMaxSize) return false;
108  if (myUseMinSize != src.myUseMinSize) return false;
109  if (myMinSize != src.myMinSize) return false;
110  if (myDensity != src.myDensity) return false;
111  if (myGradation != src.myGradation) return false;
112  if (myUseMeshSizeAttrib != src.myUseMeshSizeAttrib) return false;
113  if (myMeshSizeAttrib != src.myMeshSizeAttrib) return false;
114  if (myUseMinSizeAttrib != src.myUseMinSizeAttrib) return false;
115  if (myMinSizeAttrib != src.myMinSizeAttrib) return false;
116  if (myUseMaxSizeAttrib != src.myUseMaxSizeAttrib) return false;
117  if (myMaxSizeAttrib != src.myMaxSizeAttrib) return false;
118  if (myUseOutHardEdgesGroup != src.myUseOutHardEdgesGroup) return false;
119  if (myOutHardEdgesGroup != src.myOutHardEdgesGroup) return false;
120  if (myUseOutMeshSizeAttrib != src.myUseOutMeshSizeAttrib) return false;
121  if (myOutMeshSizeAttrib != src.myOutMeshSizeAttrib) return false;
122  if (myUseOutMeshQualityAttrib != src.myUseOutMeshQualityAttrib) return false;
123  if (myOutMeshQualityAttrib != src.myOutMeshQualityAttrib) return false;
124 
125 
126  if (baseGetSignature() != src.baseGetSignature()) return false;
127 
128  return true;
129  }
130  bool operator!=(const SOP_Remesh_2_0Parms &src) const
131  {
132  return !operator==(src);
133  }
135 
136 
137 
138  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
139  {
140  myGroup = ""_UTsh;
141  if (true)
142  graph->evalOpParm(myGroup, nodeidx, "group", time, graph->isDirect()?nullptr:depnode);
143  myHardEdges = ""_UTsh;
144  if (true)
145  graph->evalOpParm(myHardEdges, nodeidx, "hard_edges", time, graph->isDirect()?nullptr:depnode);
146  myHardPoints = ""_UTsh;
147  if (true)
148  graph->evalOpParm(myHardPoints, nodeidx, "hard_points", time, graph->isDirect()?nullptr:depnode);
149  myHardenUVSeams = false;
150  if (true)
151  graph->evalOpParm(myHardenUVSeams, nodeidx, "hardenuvseams", time, graph->isDirect()?nullptr:depnode);
152  myUVAttrib = "uv"_UTsh;
153  if (true && ( (true&&!(((getHardenUVSeams()==0)))) ) )
154  graph->evalOpParm(myUVAttrib, nodeidx, "uvattriv", time, graph->isDirect()?nullptr:depnode);
155  myIterations = 2;
156  if (true)
157  graph->evalOpParm(myIterations, nodeidx, "iterations", time, graph->isDirect()?nullptr:depnode);
158  mySmoothing = 0.1;
159  if (true)
160  graph->evalOpParm(mySmoothing, nodeidx, "smoothing", time, graph->isDirect()?nullptr:depnode);
161  myInputPtsOnly = false;
162  if (true)
163  graph->evalOpParm(myInputPtsOnly, nodeidx, "inputptsonly", time, graph->isDirect()?nullptr:depnode);
164  myDetachFromNonGroup = false;
165  if (true)
166  graph->evalOpParm(myDetachFromNonGroup, nodeidx, "detachfromnongroup", time, graph->isDirect()?nullptr:depnode);
167  myRecomputeNormals = true;
168  if (true)
169  graph->evalOpParm(myRecomputeNormals, nodeidx, "recomputenormals", time, graph->isDirect()?nullptr:depnode);
170  mySizing = 0;
171  if (true)
172  graph->evalOpParm(mySizing, nodeidx, "sizing", time, graph->isDirect()?nullptr:depnode);
173  myTargetSize = 0.2;
174  if (true && ( (true&&!(((int64(getSizing())==1)))) ) )
175  graph->evalOpParm(myTargetSize, nodeidx, "targetsize", time, graph->isDirect()?nullptr:depnode);
176  myUseMaxSize = false;
177  if (true && ( (true&&!(((int64(getSizing())==0)))) ) )
178  graph->evalOpParm(myUseMaxSize, nodeidx, "usemaxsize", time, graph->isDirect()?nullptr:depnode);
179  myMaxSize = 0.1;
180  if (true && ( (true&&!(((getUseMaxSize()==0))||((int64(getSizing())==0)))) ) )
181  graph->evalOpParm(myMaxSize, nodeidx, "maxsize", time, graph->isDirect()?nullptr:depnode);
182  myUseMinSize = false;
183  if (true && ( (true&&!(((int64(getSizing())==0)))) ) )
184  graph->evalOpParm(myUseMinSize, nodeidx, "useminsize", time, graph->isDirect()?nullptr:depnode);
185  myMinSize = .1;
186  if (true && ( (true&&!(((getUseMinSize()==0))||((int64(getSizing())==0)))) ) )
187  graph->evalOpParm(myMinSize, nodeidx, "minsize", time, graph->isDirect()?nullptr:depnode);
188  myDensity = 2.0;
189  if (true && ( (true&&!(((int64(getSizing())==0)))) ) )
190  graph->evalOpParm(myDensity, nodeidx, "density", time, graph->isDirect()?nullptr:depnode);
191  myGradation = 0.25;
192  if (true && ( (true&&!(((int64(getSizing())==0)))) ) )
193  graph->evalOpParm(myGradation, nodeidx, "gradation", time, graph->isDirect()?nullptr:depnode);
194  myUseMeshSizeAttrib = false;
195  if (true && ( (true&&!(((int64(getSizing())==0))||((int64(getSizing())==0)))) ) )
196  graph->evalOpParm(myUseMeshSizeAttrib, nodeidx, "usemeshsizeattrib", time, graph->isDirect()?nullptr:depnode);
197  myMeshSizeAttrib = "targetmeshsize"_UTsh;
198  if (true && ( (true&&!(((int64(getSizing())==0))||((getUseMeshSizeAttrib()==0))||((int64(getSizing())==0)))) ) )
199  graph->evalOpParm(myMeshSizeAttrib, nodeidx, "meshsizeattrib", time, graph->isDirect()?nullptr:depnode);
200  myUseMinSizeAttrib = false;
201  if (true && ( (true&&!(((int64(getSizing())==0)))) ) )
202  graph->evalOpParm(myUseMinSizeAttrib, nodeidx, "useminsizeattrib", time, graph->isDirect()?nullptr:depnode);
203  myMinSizeAttrib = "minmeshsize"_UTsh;
204  if (true && ( (true&&!(((int64(getSizing())==0))||((getUseMinSizeAttrib()==0))||((int64(getSizing())==0)))) ) )
205  graph->evalOpParm(myMinSizeAttrib, nodeidx, "minsizeattrib", time, graph->isDirect()?nullptr:depnode);
206  myUseMaxSizeAttrib = false;
207  if (true && ( (true&&!(((int64(getSizing())==0))||((int64(getSizing())==0)))) ) )
208  graph->evalOpParm(myUseMaxSizeAttrib, nodeidx, "usemaxsizeattrib", time, graph->isDirect()?nullptr:depnode);
209  myMaxSizeAttrib = "maxmeshsize"_UTsh;
210  if (true && ( (true&&!(((int64(getSizing())==0))||((getUseMaxSizeAttrib()==0))||((int64(getSizing())==0)))) ) )
211  graph->evalOpParm(myMaxSizeAttrib, nodeidx, "maxsizeattrib", time, graph->isDirect()?nullptr:depnode);
212  myUseOutHardEdgesGroup = false;
213  if (true)
214  graph->evalOpParm(myUseOutHardEdgesGroup, nodeidx, "useouthardedgesgroup", time, graph->isDirect()?nullptr:depnode);
215  myOutHardEdgesGroup = "hardedges"_UTsh;
216  if (true && ( (true&&!(((getUseOutHardEdgesGroup()==0)))) ) )
217  graph->evalOpParm(myOutHardEdgesGroup, nodeidx, "outhardedgesgroup", time, graph->isDirect()?nullptr:depnode);
218  myUseOutMeshSizeAttrib = false;
219  if (true)
220  graph->evalOpParm(myUseOutMeshSizeAttrib, nodeidx, "useoutmeshsizeattrib", time, graph->isDirect()?nullptr:depnode);
221  myOutMeshSizeAttrib = "meshsize"_UTsh;
222  if (true && ( (true&&!(((getUseOutMeshSizeAttrib()==0)))) ) )
223  graph->evalOpParm(myOutMeshSizeAttrib, nodeidx, "outmeshsizeattrib", time, graph->isDirect()?nullptr:depnode);
224  myUseOutMeshQualityAttrib = false;
225  if (true)
226  graph->evalOpParm(myUseOutMeshQualityAttrib, nodeidx, "useoutmeshqualityattrib", time, graph->isDirect()?nullptr:depnode);
227  myOutMeshQualityAttrib = "meshquality"_UTsh;
228  if (true && ( (true&&!(((getUseOutMeshQualityAttrib()==0)))) ) )
229  graph->evalOpParm(myOutMeshQualityAttrib, nodeidx, "outmeshqualityattrib", time, graph->isDirect()?nullptr:depnode);
230 
231  }
232 
233 
234  void loadFromOpSubclass(const LoadParms &loadparms) override
235  {
236  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
237  }
238 
239 
240  void copyFrom(const OP_NodeParms *src) override
241  {
242  *this = *((const SOP_Remesh_2_0Parms *)src);
243  }
244 
245  template <typename T>
246  void
247  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
248  {
249  if (idx.size() < 1)
250  return;
251  UT_ASSERT(idx.size() == instance.size()+1);
252  if (idx.size() != instance.size()+1)
253  return;
254  switch (idx[0])
255  {
256  case 0:
257  coerceValue(value, myGroup);
258  break;
259  case 1:
260  coerceValue(value, myHardEdges);
261  break;
262  case 2:
263  coerceValue(value, myHardPoints);
264  break;
265  case 3:
266  coerceValue(value, myHardenUVSeams);
267  break;
268  case 4:
269  coerceValue(value, myUVAttrib);
270  break;
271  case 5:
272  coerceValue(value, myIterations);
273  break;
274  case 6:
275  coerceValue(value, mySmoothing);
276  break;
277  case 7:
278  coerceValue(value, myInputPtsOnly);
279  break;
280  case 8:
281  coerceValue(value, myDetachFromNonGroup);
282  break;
283  case 9:
284  coerceValue(value, myRecomputeNormals);
285  break;
286  case 10:
287  coerceValue(value, mySizing);
288  break;
289  case 11:
290  coerceValue(value, myTargetSize);
291  break;
292  case 12:
293  coerceValue(value, myUseMaxSize);
294  break;
295  case 13:
296  coerceValue(value, myMaxSize);
297  break;
298  case 14:
299  coerceValue(value, myUseMinSize);
300  break;
301  case 15:
302  coerceValue(value, myMinSize);
303  break;
304  case 16:
305  coerceValue(value, myDensity);
306  break;
307  case 17:
308  coerceValue(value, myGradation);
309  break;
310  case 18:
311  coerceValue(value, myUseMeshSizeAttrib);
312  break;
313  case 19:
314  coerceValue(value, myMeshSizeAttrib);
315  break;
316  case 20:
317  coerceValue(value, myUseMinSizeAttrib);
318  break;
319  case 21:
320  coerceValue(value, myMinSizeAttrib);
321  break;
322  case 22:
323  coerceValue(value, myUseMaxSizeAttrib);
324  break;
325  case 23:
326  coerceValue(value, myMaxSizeAttrib);
327  break;
328  case 24:
329  coerceValue(value, myUseOutHardEdgesGroup);
330  break;
331  case 25:
332  coerceValue(value, myOutHardEdgesGroup);
333  break;
334  case 26:
335  coerceValue(value, myUseOutMeshSizeAttrib);
336  break;
337  case 27:
338  coerceValue(value, myOutMeshSizeAttrib);
339  break;
340  case 28:
341  coerceValue(value, myUseOutMeshQualityAttrib);
342  break;
343  case 29:
344  coerceValue(value, myOutMeshQualityAttrib);
345  break;
346 
347  }
348  }
349 
350  bool isParmColorRamp(exint idx) const override
351  {
352  switch (idx)
353  {
354 
355  }
356  return false;
357  }
358 
359  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
360  { doGetParmValue(idx, instance, value); }
361  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
362  { doGetParmValue(idx, instance, value); }
363  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
364  { doGetParmValue(idx, instance, value); }
365  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
366  { doGetParmValue(idx, instance, value); }
367  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
368  { doGetParmValue(idx, instance, value); }
369  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
370  { doGetParmValue(idx, instance, value); }
371  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
372  { doGetParmValue(idx, instance, value); }
373  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
374  { doGetParmValue(idx, instance, value); }
375  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
376  { doGetParmValue(idx, instance, value); }
377  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
378  { doGetParmValue(idx, instance, value); }
379  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
380  { doGetParmValue(idx, instance, value); }
381 
382  template <typename T>
383  void
384  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
385  {
386  if (idx.size() < 1)
387  return;
388  UT_ASSERT(idx.size() == instance.size()+1);
389  if (idx.size() != instance.size()+1)
390  return;
391  switch (idx[0])
392  {
393  case 0:
394  coerceValue(myGroup, ( ( value ) ));
395  break;
396  case 1:
397  coerceValue(myHardEdges, ( ( value ) ));
398  break;
399  case 2:
400  coerceValue(myHardPoints, ( ( value ) ));
401  break;
402  case 3:
403  coerceValue(myHardenUVSeams, ( ( value ) ));
404  break;
405  case 4:
406  coerceValue(myUVAttrib, ( ( value ) ));
407  break;
408  case 5:
409  coerceValue(myIterations, clampMinValue(0, ( value ) ));
410  break;
411  case 6:
412  coerceValue(mySmoothing, clampMinValue(0, ( value ) ));
413  break;
414  case 7:
415  coerceValue(myInputPtsOnly, ( ( value ) ));
416  break;
417  case 8:
418  coerceValue(myDetachFromNonGroup, ( ( value ) ));
419  break;
420  case 9:
421  coerceValue(myRecomputeNormals, ( ( value ) ));
422  break;
423  case 10:
424  coerceValue(mySizing, clampMinValue(0, clampMaxValue(1, value ) ));
425  break;
426  case 11:
427  coerceValue(myTargetSize, clampMinValue(0, ( value ) ));
428  break;
429  case 12:
430  coerceValue(myUseMaxSize, ( ( value ) ));
431  break;
432  case 13:
433  coerceValue(myMaxSize, clampMinValue(0, ( value ) ));
434  break;
435  case 14:
436  coerceValue(myUseMinSize, ( ( value ) ));
437  break;
438  case 15:
439  coerceValue(myMinSize, clampMinValue(0, ( value ) ));
440  break;
441  case 16:
442  coerceValue(myDensity, clampMinValue(1.0, ( value ) ));
443  break;
444  case 17:
445  coerceValue(myGradation, clampMinValue(0, clampMaxValue(1, value ) ));
446  break;
447  case 18:
448  coerceValue(myUseMeshSizeAttrib, ( ( value ) ));
449  break;
450  case 19:
451  coerceValue(myMeshSizeAttrib, ( ( value ) ));
452  break;
453  case 20:
454  coerceValue(myUseMinSizeAttrib, ( ( value ) ));
455  break;
456  case 21:
457  coerceValue(myMinSizeAttrib, ( ( value ) ));
458  break;
459  case 22:
460  coerceValue(myUseMaxSizeAttrib, ( ( value ) ));
461  break;
462  case 23:
463  coerceValue(myMaxSizeAttrib, ( ( value ) ));
464  break;
465  case 24:
466  coerceValue(myUseOutHardEdgesGroup, ( ( value ) ));
467  break;
468  case 25:
469  coerceValue(myOutHardEdgesGroup, ( ( value ) ));
470  break;
471  case 26:
472  coerceValue(myUseOutMeshSizeAttrib, ( ( value ) ));
473  break;
474  case 27:
475  coerceValue(myOutMeshSizeAttrib, ( ( value ) ));
476  break;
477  case 28:
478  coerceValue(myUseOutMeshQualityAttrib, ( ( value ) ));
479  break;
480  case 29:
481  coerceValue(myOutMeshQualityAttrib, ( ( value ) ));
482  break;
483 
484  }
485  }
486 
487  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
488  { doSetParmValue(idx, instance, value); }
489  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
490  { doSetParmValue(idx, instance, value); }
491  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
492  { doSetParmValue(idx, instance, value); }
493  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
494  { doSetParmValue(idx, instance, value); }
495  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
496  { doSetParmValue(idx, instance, value); }
497  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
498  { doSetParmValue(idx, instance, value); }
499  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
500  { doSetParmValue(idx, instance, value); }
501  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
502  { doSetParmValue(idx, instance, value); }
503  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
504  { doSetParmValue(idx, instance, value); }
505  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
506  { doSetParmValue(idx, instance, value); }
507  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
508  { doSetParmValue(idx, instance, value); }
509 
510  exint getNestNumParms(TempIndex idx) const override
511  {
512  if (idx.size() == 0)
513  return 30;
514  switch (idx[0])
515  {
516 
517  }
518  // Invalid
519  return 0;
520  }
521 
522  const char *getNestParmName(TempIndex fieldnum) const override
523  {
524  if (fieldnum.size() < 1)
525  return 0;
526  switch (fieldnum[0])
527  {
528  case 0:
529  return "group";
530  case 1:
531  return "hard_edges";
532  case 2:
533  return "hard_points";
534  case 3:
535  return "hardenuvseams";
536  case 4:
537  return "uvattriv";
538  case 5:
539  return "iterations";
540  case 6:
541  return "smoothing";
542  case 7:
543  return "inputptsonly";
544  case 8:
545  return "detachfromnongroup";
546  case 9:
547  return "recomputenormals";
548  case 10:
549  return "sizing";
550  case 11:
551  return "targetsize";
552  case 12:
553  return "usemaxsize";
554  case 13:
555  return "maxsize";
556  case 14:
557  return "useminsize";
558  case 15:
559  return "minsize";
560  case 16:
561  return "density";
562  case 17:
563  return "gradation";
564  case 18:
565  return "usemeshsizeattrib";
566  case 19:
567  return "meshsizeattrib";
568  case 20:
569  return "useminsizeattrib";
570  case 21:
571  return "minsizeattrib";
572  case 22:
573  return "usemaxsizeattrib";
574  case 23:
575  return "maxsizeattrib";
576  case 24:
577  return "useouthardedgesgroup";
578  case 25:
579  return "outhardedgesgroup";
580  case 26:
581  return "useoutmeshsizeattrib";
582  case 27:
583  return "outmeshsizeattrib";
584  case 28:
585  return "useoutmeshqualityattrib";
586  case 29:
587  return "outmeshqualityattrib";
588 
589  }
590  return 0;
591  }
592 
593  ParmType getNestParmType(TempIndex fieldnum) const override
594  {
595  if (fieldnum.size() < 1)
596  return PARM_UNSUPPORTED;
597  switch (fieldnum[0])
598  {
599  case 0:
600  return PARM_STRING;
601  case 1:
602  return PARM_STRING;
603  case 2:
604  return PARM_STRING;
605  case 3:
606  return PARM_INTEGER;
607  case 4:
608  return PARM_STRING;
609  case 5:
610  return PARM_INTEGER;
611  case 6:
612  return PARM_FLOAT;
613  case 7:
614  return PARM_INTEGER;
615  case 8:
616  return PARM_INTEGER;
617  case 9:
618  return PARM_INTEGER;
619  case 10:
620  return PARM_INTEGER;
621  case 11:
622  return PARM_FLOAT;
623  case 12:
624  return PARM_INTEGER;
625  case 13:
626  return PARM_FLOAT;
627  case 14:
628  return PARM_INTEGER;
629  case 15:
630  return PARM_FLOAT;
631  case 16:
632  return PARM_FLOAT;
633  case 17:
634  return PARM_FLOAT;
635  case 18:
636  return PARM_INTEGER;
637  case 19:
638  return PARM_STRING;
639  case 20:
640  return PARM_INTEGER;
641  case 21:
642  return PARM_STRING;
643  case 22:
644  return PARM_INTEGER;
645  case 23:
646  return PARM_STRING;
647  case 24:
648  return PARM_INTEGER;
649  case 25:
650  return PARM_STRING;
651  case 26:
652  return PARM_INTEGER;
653  case 27:
654  return PARM_STRING;
655  case 28:
656  return PARM_INTEGER;
657  case 29:
658  return PARM_STRING;
659 
660  }
661  return PARM_UNSUPPORTED;
662  }
663 
664  // Boiler plate to load individual types.
665  static void loadData(UT_IStream &is, int64 &v)
666  { is.bread(&v, 1); }
667  static void loadData(UT_IStream &is, bool &v)
668  { int64 iv; is.bread(&iv, 1); v = iv; }
669  static void loadData(UT_IStream &is, fpreal64 &v)
670  { is.bread<fpreal64>(&v, 1); }
671  static void loadData(UT_IStream &is, UT_Vector2D &v)
672  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
673  static void loadData(UT_IStream &is, UT_Vector3D &v)
674  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
675  is.bread<fpreal64>(&v.z(), 1); }
676  static void loadData(UT_IStream &is, UT_Vector4D &v)
677  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
678  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
679  static void loadData(UT_IStream &is, UT_Matrix2D &v)
680  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
681  static void loadData(UT_IStream &is, UT_Matrix3D &v)
682  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
683  static void loadData(UT_IStream &is, UT_Matrix4D &v)
684  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
685  static void loadData(UT_IStream &is, UT_Vector2I &v)
686  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
687  static void loadData(UT_IStream &is, UT_Vector3I &v)
688  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
689  is.bread<int64>(&v.z(), 1); }
690  static void loadData(UT_IStream &is, UT_Vector4I &v)
691  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
692  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
694  { is.bread(v); }
696  { UT_StringHolder rampdata;
697  loadData(is, rampdata);
698  if (rampdata.isstring())
699  {
700  v.reset(new UT_Ramp());
701  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
702  v->load(istr);
703  }
704  else v.reset();
705  }
708  loadData(is, data);
709  if (data.isstring())
710  {
711  // Find the data type.
712  const char *colon = UT_StringWrap(data).findChar(':');
713  if (colon)
714  {
715  int typelen = colon - data.buffer();
717  type.strncpy(data.buffer(), typelen);
718  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
719 
720  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
721  }
722  }
723  else v.reset();
724  }
725 
726  static void saveData(std::ostream &os, int64 v)
727  { UTwrite(os, &v); }
728  static void saveData(std::ostream &os, bool v)
729  { int64 iv = v; UTwrite(os, &iv); }
730  static void saveData(std::ostream &os, fpreal64 v)
731  { UTwrite<fpreal64>(os, &v); }
732  static void saveData(std::ostream &os, UT_Vector2D v)
733  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
734  static void saveData(std::ostream &os, UT_Vector3D v)
735  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
736  UTwrite<fpreal64>(os, &v.z()); }
737  static void saveData(std::ostream &os, UT_Vector4D v)
738  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
739  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
740  static void saveData(std::ostream &os, UT_Matrix2D v)
742  static void saveData(std::ostream &os, UT_Matrix3D v)
744  static void saveData(std::ostream &os, UT_Matrix4D v)
746  static void saveData(std::ostream &os, UT_StringHolder s)
747  { UT_StringWrap(s).saveBinary(os); }
748  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
750  UT_OStringStream ostr;
751  if (s) s->save(ostr);
752  result = ostr.str();
753  saveData(os, result);
754  }
755  static void saveData(std::ostream &os, PRM_DataItemHandle s)
757  UT_OStringStream ostr;
758  if (s)
759  {
760  ostr << s->getDataTypeToken();
761  ostr << ":";
762  s->saveBinary(ostr);
763  }
764  result = ostr.str();
765  saveData(os, result);
766  }
767 
768 
769  void save(std::ostream &os) const
770  {
771  int32 v = version();
772  UTwrite(os, &v);
773  saveData(os, myGroup);
774  saveData(os, myHardEdges);
775  saveData(os, myHardPoints);
776  saveData(os, myHardenUVSeams);
777  saveData(os, myUVAttrib);
778  saveData(os, myIterations);
779  saveData(os, mySmoothing);
780  saveData(os, myInputPtsOnly);
781  saveData(os, myDetachFromNonGroup);
782  saveData(os, myRecomputeNormals);
783  saveData(os, mySizing);
784  saveData(os, myTargetSize);
785  saveData(os, myUseMaxSize);
786  saveData(os, myMaxSize);
787  saveData(os, myUseMinSize);
788  saveData(os, myMinSize);
789  saveData(os, myDensity);
790  saveData(os, myGradation);
791  saveData(os, myUseMeshSizeAttrib);
792  saveData(os, myMeshSizeAttrib);
793  saveData(os, myUseMinSizeAttrib);
794  saveData(os, myMinSizeAttrib);
795  saveData(os, myUseMaxSizeAttrib);
796  saveData(os, myMaxSizeAttrib);
797  saveData(os, myUseOutHardEdgesGroup);
798  saveData(os, myOutHardEdgesGroup);
799  saveData(os, myUseOutMeshSizeAttrib);
800  saveData(os, myOutMeshSizeAttrib);
801  saveData(os, myUseOutMeshQualityAttrib);
802  saveData(os, myOutMeshQualityAttrib);
803 
804  }
805 
806  bool load(UT_IStream &is)
807  {
808  int32 v;
809  is.bread(&v, 1);
810  if (version() != v)
811  {
812  // Fail incompatible versions
813  return false;
814  }
815  loadData(is, myGroup);
816  loadData(is, myHardEdges);
817  loadData(is, myHardPoints);
818  loadData(is, myHardenUVSeams);
819  loadData(is, myUVAttrib);
820  loadData(is, myIterations);
821  loadData(is, mySmoothing);
822  loadData(is, myInputPtsOnly);
823  loadData(is, myDetachFromNonGroup);
824  loadData(is, myRecomputeNormals);
825  loadData(is, mySizing);
826  loadData(is, myTargetSize);
827  loadData(is, myUseMaxSize);
828  loadData(is, myMaxSize);
829  loadData(is, myUseMinSize);
830  loadData(is, myMinSize);
831  loadData(is, myDensity);
832  loadData(is, myGradation);
833  loadData(is, myUseMeshSizeAttrib);
834  loadData(is, myMeshSizeAttrib);
835  loadData(is, myUseMinSizeAttrib);
836  loadData(is, myMinSizeAttrib);
837  loadData(is, myUseMaxSizeAttrib);
838  loadData(is, myMaxSizeAttrib);
839  loadData(is, myUseOutHardEdgesGroup);
840  loadData(is, myOutHardEdgesGroup);
841  loadData(is, myUseOutMeshSizeAttrib);
842  loadData(is, myOutMeshSizeAttrib);
843  loadData(is, myUseOutMeshQualityAttrib);
844  loadData(is, myOutMeshQualityAttrib);
845 
846  return true;
847  }
848 
849  const UT_StringHolder & getGroup() const { return myGroup; }
850  void setGroup(const UT_StringHolder & val) { myGroup = val; }
852  {
853  SOP_Node *thissop = cookparms.getNode();
854  if (!thissop) return getGroup();
856  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
857  return result;
858  }
859  const UT_StringHolder & getHardEdges() const { return myHardEdges; }
860  void setHardEdges(const UT_StringHolder & val) { myHardEdges = val; }
862  {
863  SOP_Node *thissop = cookparms.getNode();
864  if (!thissop) return getHardEdges();
866  OP_Utils::evalOpParm(result, thissop, "hard_edges", cookparms.getCookTime(), 0);
867  return result;
868  }
869  const UT_StringHolder & getHardPoints() const { return myHardPoints; }
870  void setHardPoints(const UT_StringHolder & val) { myHardPoints = val; }
872  {
873  SOP_Node *thissop = cookparms.getNode();
874  if (!thissop) return getHardPoints();
876  OP_Utils::evalOpParm(result, thissop, "hard_points", cookparms.getCookTime(), 0);
877  return result;
878  }
879  bool getHardenUVSeams() const { return myHardenUVSeams; }
880  void setHardenUVSeams(bool val) { myHardenUVSeams = val; }
881  bool opHardenUVSeams(const SOP_NodeVerb::CookParms &cookparms) const
882  {
883  SOP_Node *thissop = cookparms.getNode();
884  if (!thissop) return getHardenUVSeams();
885  bool result;
886  OP_Utils::evalOpParm(result, thissop, "hardenuvseams", cookparms.getCookTime(), 0);
887  return result;
888  }
889  const UT_StringHolder & getUVAttrib() const { return myUVAttrib; }
890  void setUVAttrib(const UT_StringHolder & val) { myUVAttrib = val; }
892  {
893  SOP_Node *thissop = cookparms.getNode();
894  if (!thissop) return getUVAttrib();
896  OP_Utils::evalOpParm(result, thissop, "uvattriv", cookparms.getCookTime(), 0);
897  return result;
898  }
899  int64 getIterations() const { return myIterations; }
900  void setIterations(int64 val) { myIterations = val; }
902  {
903  SOP_Node *thissop = cookparms.getNode();
904  if (!thissop) return getIterations();
905  int64 result;
906  OP_Utils::evalOpParm(result, thissop, "iterations", cookparms.getCookTime(), 0);
907  return result;
908  }
909  fpreal64 getSmoothing() const { return mySmoothing; }
910  void setSmoothing(fpreal64 val) { mySmoothing = val; }
912  {
913  SOP_Node *thissop = cookparms.getNode();
914  if (!thissop) return getSmoothing();
916  OP_Utils::evalOpParm(result, thissop, "smoothing", cookparms.getCookTime(), 0);
917  return result;
918  }
919  bool getInputPtsOnly() const { return myInputPtsOnly; }
920  void setInputPtsOnly(bool val) { myInputPtsOnly = val; }
921  bool opInputPtsOnly(const SOP_NodeVerb::CookParms &cookparms) const
922  {
923  SOP_Node *thissop = cookparms.getNode();
924  if (!thissop) return getInputPtsOnly();
925  bool result;
926  OP_Utils::evalOpParm(result, thissop, "inputptsonly", cookparms.getCookTime(), 0);
927  return result;
928  }
929  bool getDetachFromNonGroup() const { return myDetachFromNonGroup; }
930  void setDetachFromNonGroup(bool val) { myDetachFromNonGroup = val; }
931  bool opDetachFromNonGroup(const SOP_NodeVerb::CookParms &cookparms) const
932  {
933  SOP_Node *thissop = cookparms.getNode();
934  if (!thissop) return getDetachFromNonGroup();
935  bool result;
936  OP_Utils::evalOpParm(result, thissop, "detachfromnongroup", cookparms.getCookTime(), 0);
937  return result;
938  }
939  bool getRecomputeNormals() const { return myRecomputeNormals; }
940  void setRecomputeNormals(bool val) { myRecomputeNormals = val; }
941  bool opRecomputeNormals(const SOP_NodeVerb::CookParms &cookparms) const
942  {
943  SOP_Node *thissop = cookparms.getNode();
944  if (!thissop) return getRecomputeNormals();
945  bool result;
946  OP_Utils::evalOpParm(result, thissop, "recomputenormals", cookparms.getCookTime(), 0);
947  return result;
948  }
949  Sizing getSizing() const { return Sizing(mySizing); }
950  void setSizing(Sizing val) { mySizing = int64(val); }
951  Sizing opSizing(const SOP_NodeVerb::CookParms &cookparms) const
952  {
953  SOP_Node *thissop = cookparms.getNode();
954  if (!thissop) return getSizing();
955  int64 result;
956  OP_Utils::evalOpParm(result, thissop, "sizing", cookparms.getCookTime(), 0);
957  return Sizing(result);
958  }
959  fpreal64 getTargetSize() const { return myTargetSize; }
960  void setTargetSize(fpreal64 val) { myTargetSize = val; }
962  {
963  SOP_Node *thissop = cookparms.getNode();
964  if (!thissop) return getTargetSize();
966  OP_Utils::evalOpParm(result, thissop, "targetsize", cookparms.getCookTime(), 0);
967  return result;
968  }
969  bool getUseMaxSize() const { return myUseMaxSize; }
970  void setUseMaxSize(bool val) { myUseMaxSize = val; }
971  bool opUseMaxSize(const SOP_NodeVerb::CookParms &cookparms) const
972  {
973  SOP_Node *thissop = cookparms.getNode();
974  if (!thissop) return getUseMaxSize();
975  bool result;
976  OP_Utils::evalOpParm(result, thissop, "usemaxsize", cookparms.getCookTime(), 0);
977  return result;
978  }
979  fpreal64 getMaxSize() const { return myMaxSize; }
980  void setMaxSize(fpreal64 val) { myMaxSize = val; }
982  {
983  SOP_Node *thissop = cookparms.getNode();
984  if (!thissop) return getMaxSize();
986  OP_Utils::evalOpParm(result, thissop, "maxsize", cookparms.getCookTime(), 0);
987  return result;
988  }
989  bool getUseMinSize() const { return myUseMinSize; }
990  void setUseMinSize(bool val) { myUseMinSize = val; }
991  bool opUseMinSize(const SOP_NodeVerb::CookParms &cookparms) const
992  {
993  SOP_Node *thissop = cookparms.getNode();
994  if (!thissop) return getUseMinSize();
995  bool result;
996  OP_Utils::evalOpParm(result, thissop, "useminsize", cookparms.getCookTime(), 0);
997  return result;
998  }
999  fpreal64 getMinSize() const { return myMinSize; }
1000  void setMinSize(fpreal64 val) { myMinSize = val; }
1002  {
1003  SOP_Node *thissop = cookparms.getNode();
1004  if (!thissop) return getMinSize();
1005  fpreal64 result;
1006  OP_Utils::evalOpParm(result, thissop, "minsize", cookparms.getCookTime(), 0);
1007  return result;
1008  }
1009  fpreal64 getDensity() const { return myDensity; }
1010  void setDensity(fpreal64 val) { myDensity = val; }
1012  {
1013  SOP_Node *thissop = cookparms.getNode();
1014  if (!thissop) return getDensity();
1015  fpreal64 result;
1016  OP_Utils::evalOpParm(result, thissop, "density", cookparms.getCookTime(), 0);
1017  return result;
1018  }
1019  fpreal64 getGradation() const { return myGradation; }
1020  void setGradation(fpreal64 val) { myGradation = val; }
1022  {
1023  SOP_Node *thissop = cookparms.getNode();
1024  if (!thissop) return getGradation();
1025  fpreal64 result;
1026  OP_Utils::evalOpParm(result, thissop, "gradation", cookparms.getCookTime(), 0);
1027  return result;
1028  }
1029  bool getUseMeshSizeAttrib() const { return myUseMeshSizeAttrib; }
1030  void setUseMeshSizeAttrib(bool val) { myUseMeshSizeAttrib = val; }
1031  bool opUseMeshSizeAttrib(const SOP_NodeVerb::CookParms &cookparms) const
1032  {
1033  SOP_Node *thissop = cookparms.getNode();
1034  if (!thissop) return getUseMeshSizeAttrib();
1035  bool result;
1036  OP_Utils::evalOpParm(result, thissop, "usemeshsizeattrib", cookparms.getCookTime(), 0);
1037  return result;
1038  }
1039  const UT_StringHolder & getMeshSizeAttrib() const { return myMeshSizeAttrib; }
1040  void setMeshSizeAttrib(const UT_StringHolder & val) { myMeshSizeAttrib = val; }
1042  {
1043  SOP_Node *thissop = cookparms.getNode();
1044  if (!thissop) return getMeshSizeAttrib();
1046  OP_Utils::evalOpParm(result, thissop, "meshsizeattrib", cookparms.getCookTime(), 0);
1047  return result;
1048  }
1049  bool getUseMinSizeAttrib() const { return myUseMinSizeAttrib; }
1050  void setUseMinSizeAttrib(bool val) { myUseMinSizeAttrib = val; }
1051  bool opUseMinSizeAttrib(const SOP_NodeVerb::CookParms &cookparms) const
1052  {
1053  SOP_Node *thissop = cookparms.getNode();
1054  if (!thissop) return getUseMinSizeAttrib();
1055  bool result;
1056  OP_Utils::evalOpParm(result, thissop, "useminsizeattrib", cookparms.getCookTime(), 0);
1057  return result;
1058  }
1059  const UT_StringHolder & getMinSizeAttrib() const { return myMinSizeAttrib; }
1060  void setMinSizeAttrib(const UT_StringHolder & val) { myMinSizeAttrib = val; }
1062  {
1063  SOP_Node *thissop = cookparms.getNode();
1064  if (!thissop) return getMinSizeAttrib();
1066  OP_Utils::evalOpParm(result, thissop, "minsizeattrib", cookparms.getCookTime(), 0);
1067  return result;
1068  }
1069  bool getUseMaxSizeAttrib() const { return myUseMaxSizeAttrib; }
1070  void setUseMaxSizeAttrib(bool val) { myUseMaxSizeAttrib = val; }
1071  bool opUseMaxSizeAttrib(const SOP_NodeVerb::CookParms &cookparms) const
1072  {
1073  SOP_Node *thissop = cookparms.getNode();
1074  if (!thissop) return getUseMaxSizeAttrib();
1075  bool result;
1076  OP_Utils::evalOpParm(result, thissop, "usemaxsizeattrib", cookparms.getCookTime(), 0);
1077  return result;
1078  }
1079  const UT_StringHolder & getMaxSizeAttrib() const { return myMaxSizeAttrib; }
1080  void setMaxSizeAttrib(const UT_StringHolder & val) { myMaxSizeAttrib = val; }
1082  {
1083  SOP_Node *thissop = cookparms.getNode();
1084  if (!thissop) return getMaxSizeAttrib();
1086  OP_Utils::evalOpParm(result, thissop, "maxsizeattrib", cookparms.getCookTime(), 0);
1087  return result;
1088  }
1089  bool getUseOutHardEdgesGroup() const { return myUseOutHardEdgesGroup; }
1090  void setUseOutHardEdgesGroup(bool val) { myUseOutHardEdgesGroup = val; }
1092  {
1093  SOP_Node *thissop = cookparms.getNode();
1094  if (!thissop) return getUseOutHardEdgesGroup();
1095  bool result;
1096  OP_Utils::evalOpParm(result, thissop, "useouthardedgesgroup", cookparms.getCookTime(), 0);
1097  return result;
1098  }
1099  const UT_StringHolder & getOutHardEdgesGroup() const { return myOutHardEdgesGroup; }
1100  void setOutHardEdgesGroup(const UT_StringHolder & val) { myOutHardEdgesGroup = val; }
1102  {
1103  SOP_Node *thissop = cookparms.getNode();
1104  if (!thissop) return getOutHardEdgesGroup();
1106  OP_Utils::evalOpParm(result, thissop, "outhardedgesgroup", cookparms.getCookTime(), 0);
1107  return result;
1108  }
1109  bool getUseOutMeshSizeAttrib() const { return myUseOutMeshSizeAttrib; }
1110  void setUseOutMeshSizeAttrib(bool val) { myUseOutMeshSizeAttrib = val; }
1112  {
1113  SOP_Node *thissop = cookparms.getNode();
1114  if (!thissop) return getUseOutMeshSizeAttrib();
1115  bool result;
1116  OP_Utils::evalOpParm(result, thissop, "useoutmeshsizeattrib", cookparms.getCookTime(), 0);
1117  return result;
1118  }
1119  const UT_StringHolder & getOutMeshSizeAttrib() const { return myOutMeshSizeAttrib; }
1120  void setOutMeshSizeAttrib(const UT_StringHolder & val) { myOutMeshSizeAttrib = val; }
1122  {
1123  SOP_Node *thissop = cookparms.getNode();
1124  if (!thissop) return getOutMeshSizeAttrib();
1126  OP_Utils::evalOpParm(result, thissop, "outmeshsizeattrib", cookparms.getCookTime(), 0);
1127  return result;
1128  }
1129  bool getUseOutMeshQualityAttrib() const { return myUseOutMeshQualityAttrib; }
1130  void setUseOutMeshQualityAttrib(bool val) { myUseOutMeshQualityAttrib = val; }
1132  {
1133  SOP_Node *thissop = cookparms.getNode();
1134  if (!thissop) return getUseOutMeshQualityAttrib();
1135  bool result;
1136  OP_Utils::evalOpParm(result, thissop, "useoutmeshqualityattrib", cookparms.getCookTime(), 0);
1137  return result;
1138  }
1139  const UT_StringHolder & getOutMeshQualityAttrib() const { return myOutMeshQualityAttrib; }
1140  void setOutMeshQualityAttrib(const UT_StringHolder & val) { myOutMeshQualityAttrib = val; }
1142  {
1143  SOP_Node *thissop = cookparms.getNode();
1144  if (!thissop) return getOutMeshQualityAttrib();
1146  OP_Utils::evalOpParm(result, thissop, "outmeshqualityattrib", cookparms.getCookTime(), 0);
1147  return result;
1148  }
1149 
1150 private:
1151  UT_StringHolder myGroup;
1152  UT_StringHolder myHardEdges;
1153  UT_StringHolder myHardPoints;
1154  bool myHardenUVSeams;
1155  UT_StringHolder myUVAttrib;
1156  int64 myIterations;
1157  fpreal64 mySmoothing;
1158  bool myInputPtsOnly;
1159  bool myDetachFromNonGroup;
1160  bool myRecomputeNormals;
1161  int64 mySizing;
1162  fpreal64 myTargetSize;
1163  bool myUseMaxSize;
1164  fpreal64 myMaxSize;
1165  bool myUseMinSize;
1166  fpreal64 myMinSize;
1167  fpreal64 myDensity;
1168  fpreal64 myGradation;
1169  bool myUseMeshSizeAttrib;
1170  UT_StringHolder myMeshSizeAttrib;
1171  bool myUseMinSizeAttrib;
1172  UT_StringHolder myMinSizeAttrib;
1173  bool myUseMaxSizeAttrib;
1174  UT_StringHolder myMaxSizeAttrib;
1175  bool myUseOutHardEdgesGroup;
1176  UT_StringHolder myOutHardEdgesGroup;
1177  bool myUseOutMeshSizeAttrib;
1178  UT_StringHolder myOutMeshSizeAttrib;
1179  bool myUseOutMeshQualityAttrib;
1180  UT_StringHolder myOutMeshQualityAttrib;
1181 
1182 };
type
Definition: core.h:556
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
int64 getIterations() const
void setOutMeshSizeAttrib(const UT_StringHolder &val)
Sizing opSizing(const SOP_NodeVerb::CookParms &cookparms) const
bool opUseMinSize(const SOP_NodeVerb::CookParms &cookparms) const
bool load(UT_IStream &is)
bool getHardenUVSeams() const
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
UT_StringHolder opOutMeshQualityAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, PRM_DataItemHandle s)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
static void saveData(std::ostream &os, fpreal64 v)
const char * getNestParmName(TempIndex fieldnum) const override
bool getUseMeshSizeAttrib() const
void setUseMaxSizeAttrib(bool val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
fpreal64 opDensity(const SOP_NodeVerb::CookParms &cookparms) const
exint getNestNumParms(TempIndex idx) const override
bool getUseOutMeshQualityAttrib() const
bool getDetachFromNonGroup() const
exint bread(int32 *buffer, exint asize=1)
GLboolean * data
Definition: glcorearb.h:131
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:493
fpreal64 getSmoothing() const
static void saveData(std::ostream &os, UT_StringHolder s)
const GLdouble * v
Definition: glcorearb.h:837
fpreal getTime() const
Definition: OP_Context.h:63
static void loadData(UT_IStream &is, UT_Matrix4D &v)
void setHardEdges(const UT_StringHolder &val)
bool opDetachFromNonGroup(const SOP_NodeVerb::CookParms &cookparms) const
void setDensity(fpreal64 val)
GLsizei const GLfloat * value
Definition: glcorearb.h:824
bool opUseOutHardEdgesGroup(const SOP_NodeVerb::CookParms &cookparms) const
void setMinSizeAttrib(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Vector3D &v)
const UT_StringHolder & getMinSizeAttrib() const
static void loadData(UT_IStream &is, int64 &v)
const OP_Context & context() const
Definition: OP_NodeParms.h:97
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
void copyFrom(const OP_NodeParms *src) override
SYS_FORCE_INLINE const char * buffer() const
bool operator!=(const SOP_Remesh_2_0Parms &src) const
void setOutMeshQualityAttrib(const UT_StringHolder &val)
GLdouble s
Definition: glad.h:3009
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
static void loadData(UT_IStream &is, bool &v)
An output stream object that owns its own string buffer storage.
static void loadData(UT_IStream &is, UT_Vector3I &v)
fpreal64 getMinSize() const
const UT_StringHolder & getOutMeshSizeAttrib() const
void setMaxSizeAttrib(const UT_StringHolder &val)
UT_StringHolder opHardEdges(const SOP_NodeVerb::CookParms &cookparms) const
**But if you need a result
Definition: thread.h:622
void setHardenUVSeams(bool val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
UT_StringHolder opMinSizeAttrib(const SOP_NodeVerb::CookParms &cookparms) const
exint nodeIdx() const
Definition: OP_NodeParms.h:95
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
static void loadData(UT_IStream &is, UT_Matrix2D &v)
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
void setUseMinSize(bool val)
void setDetachFromNonGroup(bool val)
static void loadData(UT_IStream &is, UT_Vector4D &v)
int64 opIterations(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_Matrix4D &value) override
const UT_StringHolder & getHardPoints() const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) 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
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
const UT_StringHolder & getOutMeshQualityAttrib() const
bool operator==(const SOP_Remesh_2_0Parms &src) const
static void loadData(UT_IStream &is, fpreal64 &v)
void setIterations(int64 val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
static void saveData(std::ostream &os, UT_Vector2D v)
fpreal64 opSmoothing(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
bool opUseMaxSizeAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix3D &v)
void setUseOutMeshSizeAttrib(bool val)
void setGroup(const UT_StringHolder &val)
void setUseMinSizeAttrib(bool val)
exint length() const
bool getUseOutHardEdgesGroup() const
static void saveData(std::ostream &os, UT_Vector4D v)
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
const UT_StringHolder & getGroup() const
bool getUseOutMeshSizeAttrib() const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
void setUVAttrib(const UT_StringHolder &val)
static void saveData(std::ostream &os, UT_Vector3D v)
UT_StringHolder opOutHardEdgesGroup(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getMaxSizeAttrib() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
fpreal64 opTargetSize(const SOP_NodeVerb::CookParms &cookparms) const
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
void setSmoothing(fpreal64 val)
fpreal64 getTargetSize() const
bool opUseOutMeshSizeAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
fpreal64 opGradation(const SOP_NodeVerb::CookParms &cookparms) const
bool opInputPtsOnly(const SOP_NodeVerb::CookParms &cookparms) const
long long int64
Definition: SYS_Types.h:116
void setMeshSizeAttrib(const UT_StringHolder &val)
bool opUseMinSizeAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setUseOutMeshQualityAttrib(bool val)
bool opUseOutMeshQualityAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void save(std::ostream &os) const
void setUseMaxSize(bool val)
static void saveData(std::ostream &os, bool v)
bool getUseMaxSizeAttrib() const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
static void loadData(UT_IStream &is, UT_StringHolder &v)
const UT_StringHolder & getUVAttrib() const
void setUseMeshSizeAttrib(bool val)
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:303
static void saveData(std::ostream &os, int64 v)
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
const UT_StringHolder & getHardEdges() const
GT_API const UT_StringHolder version
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
bool getRecomputeNormals() const
void loadFromOpSubclass(const LoadParms &loadparms) override
fpreal64 getGradation() const
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
bool opUseMeshSizeAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setInputPtsOnly(bool val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
void setGradation(fpreal64 val)
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
fpreal64 fpreal
Definition: SYS_Types.h:278
SYS_FORCE_INLINE UT_StringHolder getToken(Sizing enum_value)
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
bool getUseMinSizeAttrib() const
LeafData & operator=(const LeafData &)=delete
Utility class for containing a color ramp.
Definition: UT_Ramp.h:96
static void loadData(UT_IStream &is, UT_Vector2D &v)
ParmType getNestParmType(TempIndex fieldnum) const override
const UT_StringHolder & getOutHardEdgesGroup() const
const UT_StringHolder & getMeshSizeAttrib() const
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
GLuint GLfloat * val
Definition: glcorearb.h:1608
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:294
static void loadData(UT_IStream &is, UT_Vector2I &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
#define SOP_API
Definition: SOP_API.h:10
bool opRecomputeNormals(const SOP_NodeVerb::CookParms &cookparms) const
void setUseOutHardEdgesGroup(bool val)
static void loadData(UT_IStream &is, UT_Vector4I &v)
void setMaxSize(fpreal64 val)
void setTargetSize(fpreal64 val)
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:372
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
fpreal64 opMaxSize(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Matrix4D v)
const char * findChar(int c) const
Definition: UT_String.h:1401
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
void setOutHardEdgesGroup(const UT_StringHolder &val)
UT_StringHolder opUVAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setHardPoints(const UT_StringHolder &val)
GLboolean r
Definition: glcorearb.h:1222
bool opHardenUVSeams(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
UT_StringHolder opMaxSizeAttrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
UT_StringHolder opOutMeshSizeAttrib(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opMinSize(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
UT_StringHolder opHardPoints(const SOP_NodeVerb::CookParms &cookparms) const
bool opUseMaxSize(const SOP_NodeVerb::CookParms &cookparms) const
void setSizing(Sizing val)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
SYS_FORCE_INLINE bool isstring() const
void setMinSize(fpreal64 val)
void setRecomputeNormals(bool val)
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
bool isParmColorRamp(exint idx) const override
static void saveData(std::ostream &os, UT_Matrix2D v)
UT_StringHolder opMeshSizeAttrib(const SOP_NodeVerb::CookParms &cookparms) const
GLenum src
Definition: glcorearb.h:1793
fpreal64 getDensity() const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
fpreal64 getMaxSize() const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
static void saveData(std::ostream &os, UT_Matrix3D v)