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