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