HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_PolyBevel-3.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_NodeVerb.h>
7 #include <SOP/SOP_GraphProxy.h>
8 
9 #include <OP/OP_Utils.h>
10 #include <PRM/PRM_Parm.h>
11 #include <UT/UT_IStream.h>
12 #include <UT/UT_NTStreamUtil.h>
13 #include <UT/UT_Ramp.h>
14 #include <UT/UT_SharedPtr.h>
15 #include <UT/UT_StringHolder.h>
16 #include <UT/UT_StringStream.h>
17 #include <UT/UT_VectorTypes.h>
18 #include <SYS/SYS_Types.h>
19 
20 using namespace UT::Literal;
21 
22 class DEP_MicroNode;
23 namespace SOP_PolyBevel_3_0Enums
24 {
25  enum class GroupType
26  {
27  PRIMS = 0,
28  POINTS,
29  EDGES,
30  GUESS
31  };
32  enum class UseOffsetScale
33  {
34  UNSCALED = 0,
35  BYATTRIB
36  };
37  enum class Sliding
38  {
39  AUTO = 0,
40  ALWAYS,
41  NEVER
42  };
43  enum class Limit
44  {
45  NEVER = 0,
48  };
49  enum class FilletShape
50  {
51  NONE = 0,
52  SOLID,
53  CREASE,
54  CHAMFER,
55  ROUND
56  };
57  enum class ProfileSampling
58  {
59  UNIFORM = 0,
60  ADAPTIVE,
62  };
63  enum class ProfileSource
64  {
65  BASIC = 0,
66  RAMP,
67  EXTERNAL
68  };
69 }
70 
71 
73 {
74 public:
75  static int version() { return 1; }
76 
78  {
79  myGroup = ""_sh;
80  myGroupType = 4;
81  myIgnoreBridges = true;
82  myIgnoreShared = false;
83  myIgnoreFlatEdges = false;
84  myIgnoreFlatPoints = false;
85  myIgnoreInlinePoints = false;
86  myFlatAngle = 2;
87  myOffset = 0;
88  myUseOffsetScale = 0;
89  myPointScaleAttr = "pscale"_sh;
90  mySliding = 0;
91  myAsymTol = 0.5;
92  mySlideEdges = ""_sh;
93  myDetectCollisions = true;
94  myRestrictSlides = true;
95  myLimit = 1;
96  myStopAtSlideEnd = true;
97  myStopAtPinches = true;
98  myPinchAngle = 0;
99  myStopAtCollisions = true;
100  myFilletShape = 4;
101  myConvexity = 1.0;
102  myProfileSource = 0;
103  myProfileScale = 1;
104  myReverseProfile = false;
105  mySymmetrizeProfile = true;
106  myProfileDirection = ""_sh;
107  myProfileRamp = UT_SharedPtr<UT_Ramp>(0);
108  myFlatBoost = 30;
109  myUsePointFilletPolys = false;
110  myPointFilletPolys = "pointfilletpolys"_sh;
111  myUsePointFilletEdges = false;
112  myPointFilletEdges = "pointfilletedges"_sh;
113  myUseEdgeFilletGroup = false;
114  myEdgeFilletGroup = "edgefilletpolys"_sh;
115  myUseOffsetEdges = false;
116  myOffsetEdges = "offsetedges"_sh;
117  myUseOffsetPoints = false;
118  myOffsetPoints = "offsetpoints"_sh;
119  myUseMergedPoints = false;
120  myMergedPoints = "mergedpoints"_sh;
121  myProfileSampling = 0;
122  myDivisions = 1;
123 
124  }
125 
126  explicit SOP_PolyBevel_3_0Parms(const SOP_PolyBevel_3_0Parms &) = default;
127 
129 
131  {
132  if (myGroup != src.myGroup) return false;
133  if (myGroupType != src.myGroupType) return false;
134  if (myIgnoreBridges != src.myIgnoreBridges) return false;
135  if (myIgnoreShared != src.myIgnoreShared) return false;
136  if (myIgnoreFlatEdges != src.myIgnoreFlatEdges) return false;
137  if (myIgnoreFlatPoints != src.myIgnoreFlatPoints) return false;
138  if (myIgnoreInlinePoints != src.myIgnoreInlinePoints) return false;
139  if (myFlatAngle != src.myFlatAngle) return false;
140  if (myOffset != src.myOffset) return false;
141  if (myUseOffsetScale != src.myUseOffsetScale) return false;
142  if (myPointScaleAttr != src.myPointScaleAttr) return false;
143  if (mySliding != src.mySliding) return false;
144  if (myAsymTol != src.myAsymTol) return false;
145  if (mySlideEdges != src.mySlideEdges) return false;
146  if (myDetectCollisions != src.myDetectCollisions) return false;
147  if (myRestrictSlides != src.myRestrictSlides) return false;
148  if (myLimit != src.myLimit) return false;
149  if (myStopAtSlideEnd != src.myStopAtSlideEnd) return false;
150  if (myStopAtPinches != src.myStopAtPinches) return false;
151  if (myPinchAngle != src.myPinchAngle) return false;
152  if (myStopAtCollisions != src.myStopAtCollisions) return false;
153  if (myFilletShape != src.myFilletShape) return false;
154  if (myConvexity != src.myConvexity) return false;
155  if (myProfileSource != src.myProfileSource) return false;
156  if (myProfileScale != src.myProfileScale) return false;
157  if (myReverseProfile != src.myReverseProfile) return false;
158  if (mySymmetrizeProfile != src.mySymmetrizeProfile) return false;
159  if (myProfileDirection != src.myProfileDirection) return false;
160  if (myProfileRamp != src.myProfileRamp) return false;
161  if (myFlatBoost != src.myFlatBoost) return false;
162  if (myUsePointFilletPolys != src.myUsePointFilletPolys) return false;
163  if (myPointFilletPolys != src.myPointFilletPolys) return false;
164  if (myUsePointFilletEdges != src.myUsePointFilletEdges) return false;
165  if (myPointFilletEdges != src.myPointFilletEdges) return false;
166  if (myUseEdgeFilletGroup != src.myUseEdgeFilletGroup) return false;
167  if (myEdgeFilletGroup != src.myEdgeFilletGroup) return false;
168  if (myUseOffsetEdges != src.myUseOffsetEdges) return false;
169  if (myOffsetEdges != src.myOffsetEdges) return false;
170  if (myUseOffsetPoints != src.myUseOffsetPoints) return false;
171  if (myOffsetPoints != src.myOffsetPoints) return false;
172  if (myUseMergedPoints != src.myUseMergedPoints) return false;
173  if (myMergedPoints != src.myMergedPoints) return false;
174  if (myProfileSampling != src.myProfileSampling) return false;
175  if (myDivisions != src.myDivisions) return false;
176 
177  return true;
178  }
180  {
181  return !operator==(src);
182  }
190 
191 
192 
193  void buildFromOp(const SOP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
194  {
195  myGroup = ""_sh;
196  if (true)
197  graph->evalOpParm(myGroup, nodeidx, "group", time, 0);
198  myGroupType = 4;
199  if (true)
200  graph->evalOpParm(myGroupType, nodeidx, "grouptype", time, 0);
201  myIgnoreBridges = true;
202  if (true && ( (!(((int64(getGroupType())!=0)))) ) )
203  graph->evalOpParm(myIgnoreBridges, nodeidx, "ignorebridgededges", time, 0);
204  myIgnoreShared = false;
205  if (true && ( (!(((int64(getGroupType())!=0)))) ) )
206  graph->evalOpParm(myIgnoreShared, nodeidx, "ignoresharededges", time, 0);
207  myIgnoreFlatEdges = false;
208  if (true && ( (!(((int64(getGroupType())==1)))) ) )
209  graph->evalOpParm(myIgnoreFlatEdges, nodeidx, "ignoreflatedges", time, 0);
210  myIgnoreFlatPoints = false;
211  if (true && ( (!(((int64(getGroupType())!=1)))) ) )
212  graph->evalOpParm(myIgnoreFlatPoints, nodeidx, "ignoreflatpoints", time, 0);
213  myIgnoreInlinePoints = false;
214  if (true && ( (!(((int64(getGroupType())!=1)))) ) )
215  graph->evalOpParm(myIgnoreInlinePoints, nodeidx, "ignoreinlinepoints", time, 0);
216  myFlatAngle = 2;
217  if (true && ( (!(((getIgnoreFlatEdges()==0)&&(getIgnoreFlatPoints()==0)&&(getIgnoreInlinePoints()==0)))) ) )
218  graph->evalOpParm(myFlatAngle, nodeidx, "flatangle", time, 0);
219  myOffset = 0;
220  if (true)
221  graph->evalOpParm(myOffset, nodeidx, "offset", time, 0);
222  myUseOffsetScale = 0;
223  if (true)
224  graph->evalOpParm(myUseOffsetScale, nodeidx, "useoffsetscale", time, 0);
225  myPointScaleAttr = "pscale"_sh;
226  if (true && ( (!(((int64(getUseOffsetScale())==0)))) ) )
227  graph->evalOpParm(myPointScaleAttr, nodeidx, "pointscaleattr", time, 0);
228  mySliding = 0;
229  if (true)
230  graph->evalOpParm(mySliding, nodeidx, "sliding", time, 0);
231  myAsymTol = 0.5;
232  if (true && ( (!(((int64(getSliding())!=0))||((int64(getGroupType())==1)))) ) )
233  graph->evalOpParm(myAsymTol, nodeidx, "asymtol", time, 0);
234  mySlideEdges = ""_sh;
235  if (true && ( (!(((int64(getSliding())==1)))) ) )
236  graph->evalOpParm(mySlideEdges, nodeidx, "slideedges", time, 0);
237  myDetectCollisions = true;
238  if (true)
239  graph->evalOpParm(myDetectCollisions, nodeidx, "detectcollisions", time, 0);
240  myRestrictSlides = true;
241  if (true)
242  graph->evalOpParm(myRestrictSlides, nodeidx, "restrictslides", time, 0);
243  myLimit = 1;
244  if (true)
245  graph->evalOpParm(myLimit, nodeidx, "limit", time, 0);
246  myStopAtSlideEnd = true;
247  if (true && ( (!(((int64(getLimit())==0))||((getRestrictSlides()==0)))) ) )
248  graph->evalOpParm(myStopAtSlideEnd, nodeidx, "stopatslideend", time, 0);
249  myStopAtPinches = true;
250  if (true && ( (!(((int64(getLimit())==0))||((getDetectCollisions()==0)))) ) )
251  graph->evalOpParm(myStopAtPinches, nodeidx, "stopatpinches", time, 0);
252  myPinchAngle = 0;
253  if (true && ( (!(((getStopAtPinches()==0)))) ) )
254  graph->evalOpParm(myPinchAngle, nodeidx, "pinchangle", time, 0);
255  myStopAtCollisions = true;
256  if (true && ( (!(((getStopAtPinches()==0)))) ) )
257  graph->evalOpParm(myStopAtCollisions, nodeidx, "stopatcollisions", time, 0);
258  myFilletShape = 4;
259  if (true)
260  graph->evalOpParm(myFilletShape, nodeidx, "filletshape", time, 0);
261  myConvexity = 1.0;
262  if (true && ( (!(((int64(getFilletShape())!=4))||((int64(getGroupType())==1)))) ) )
263  graph->evalOpParm(myConvexity, nodeidx, "convexity", time, 0);
264  myProfileSource = 0;
265  if (true && ( (!(((int64(getGroupType())==1))||((int64(getFilletShape())!=4)))) ) )
266  graph->evalOpParm(myProfileSource, nodeidx, "profilesource", time, 0);
267  myProfileScale = 1;
268  if (true && ( (!(((int64(getGroupType())==1))||((int64(getFilletShape())!=4))||((int64(getProfileSource())==0))||((int64(getGroupType())==1))||((int64(getFilletShape())!=4))||((int64(getProfileSource())==0)))) ) )
269  graph->evalOpParm(myProfileScale, nodeidx, "profilescale", time, 0);
270  myReverseProfile = false;
271  if (true && ( (!(((int64(getGroupType())==1))||((int64(getFilletShape())!=4))||((int64(getProfileSource())==0))||((int64(getGroupType())==1))||((int64(getFilletShape())!=4))||((int64(getProfileSource())==0)))) ) )
272  graph->evalOpParm(myReverseProfile, nodeidx, "reverseprofile", time, 0);
273  mySymmetrizeProfile = true;
274  if (true && ( (!(((int64(getGroupType())==1))||((int64(getFilletShape())!=4))||((int64(getProfileSource())==0))||((int64(getGroupType())==1))||((int64(getFilletShape())!=4))||((int64(getProfileSource())==0)))) ) )
275  graph->evalOpParm(mySymmetrizeProfile, nodeidx, "symmetrizeprofile", time, 0);
276  myProfileDirection = ""_sh;
277  if (true && ( (!(((int64(getGroupType())==1))||((int64(getFilletShape())!=4))||((int64(getProfileSource())==0))||((getSymmetrizeProfile()==1)))) ) )
278  graph->evalOpParm(myProfileDirection, nodeidx, "profiledirection", time, 0);
279  myProfileRamp = UT_SharedPtr<UT_Ramp>(0);
280  if (true && ( (!(((int64(getGroupType())==1))||((int64(getFilletShape())!=4))||((int64(getProfileSource())==0))||((int64(getGroupType())==1))||((int64(getFilletShape())!=4))||((int64(getProfileSource())!=1)))) ) )
281  graph->evalOpParm(myProfileRamp, nodeidx, "profileramp", time, 0);
282  myFlatBoost = 30;
283  if (true && ( (!(((int64(getGroupType())==1))||((int64(getFilletShape())!=4))||((int64(getProfileSource())==0)))) ) )
284  graph->evalOpParm(myFlatBoost, nodeidx, "flatboost", time, 0);
285  myUsePointFilletPolys = false;
286  if (true)
287  graph->evalOpParm(myUsePointFilletPolys, nodeidx, "useptfilletgroup", time, 0);
288  myPointFilletPolys = "pointfilletpolys"_sh;
289  if (true && ( (!(((getUsePointFilletPolys()==0)))) ) )
290  graph->evalOpParm(myPointFilletPolys, nodeidx, "ptfilletgroup", time, 0);
291  myUsePointFilletEdges = false;
292  if (true)
293  graph->evalOpParm(myUsePointFilletEdges, nodeidx, "useptfilletedges", time, 0);
294  myPointFilletEdges = "pointfilletedges"_sh;
295  if (true && ( (!(((getUsePointFilletEdges()==0)))) ) )
296  graph->evalOpParm(myPointFilletEdges, nodeidx, "ptfilletedges", time, 0);
297  myUseEdgeFilletGroup = false;
298  if (true && ( (!(((int64(getGroupType())==1)))) ) )
299  graph->evalOpParm(myUseEdgeFilletGroup, nodeidx, "useedgefilletgroup", time, 0);
300  myEdgeFilletGroup = "edgefilletpolys"_sh;
301  if (true && ( (!(((getUseEdgeFilletGroup()==0))||((int64(getGroupType())==1)))) ) )
302  graph->evalOpParm(myEdgeFilletGroup, nodeidx, "edgeprims", time, 0);
303  myUseOffsetEdges = false;
304  if (true)
305  graph->evalOpParm(myUseOffsetEdges, nodeidx, "useoffsetedges", time, 0);
306  myOffsetEdges = "offsetedges"_sh;
307  if (true && ( (!(((getUseOffsetEdges()==0)))) ) )
308  graph->evalOpParm(myOffsetEdges, nodeidx, "offsetedges", time, 0);
309  myUseOffsetPoints = false;
310  if (true)
311  graph->evalOpParm(myUseOffsetPoints, nodeidx, "useoffsetpoints", time, 0);
312  myOffsetPoints = "offsetpoints"_sh;
313  if (true && ( (!(((getUseOffsetPoints()==0)))) ) )
314  graph->evalOpParm(myOffsetPoints, nodeidx, "offsetpoints", time, 0);
315  myUseMergedPoints = false;
316  if (true)
317  graph->evalOpParm(myUseMergedPoints, nodeidx, "usemergedpoints", time, 0);
318  myMergedPoints = "mergedpoints"_sh;
319  if (true && ( (!(((getUseMergedPoints()==0)))) ) )
320  graph->evalOpParm(myMergedPoints, nodeidx, "mergedpoints", time, 0);
321  myProfileSampling = 0;
322  if (true && ( (!(((int64(getGroupType())==1))||((int64(getFilletShape())!=4))||((int64(getProfileSource())==0)))) ) )
323  graph->evalOpParm(myProfileSampling, nodeidx, "profilesampling", time, 0);
324  myDivisions = 1;
325  if (true && ( (!(((int64(getFilletShape())==0))||((int64(getProfileSampling())==2)))) ) )
326  graph->evalOpParm(myDivisions, nodeidx, "divisions", time, 0);
327 
328  }
329 
330 
331  void loadFromOpSubclass(const LoadParms &loadparms) override
332  {
333  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
334  }
335 
336 
337  void copyFrom(const SOP_NodeParms *src) override
338  {
339  *this = *((const SOP_PolyBevel_3_0Parms *)src);
340  }
341 
342  template <typename T>
343  void
344  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
345  {
346  if (idx.size() < 1)
347  return;
348  UT_ASSERT(idx.size() == instance.size()+1);
349  if (idx.size() != instance.size()+1)
350  return;
351  switch (idx[0])
352  {
353  case 0:
354  coerceValue(value, myGroup);
355  break;
356  case 1:
357  coerceValue(value, myGroupType);
358  break;
359  case 2:
360  coerceValue(value, myIgnoreBridges);
361  break;
362  case 3:
363  coerceValue(value, myIgnoreShared);
364  break;
365  case 4:
366  coerceValue(value, myIgnoreFlatEdges);
367  break;
368  case 5:
369  coerceValue(value, myIgnoreFlatPoints);
370  break;
371  case 6:
372  coerceValue(value, myIgnoreInlinePoints);
373  break;
374  case 7:
375  coerceValue(value, myFlatAngle);
376  break;
377  case 8:
378  coerceValue(value, myOffset);
379  break;
380  case 9:
381  coerceValue(value, myUseOffsetScale);
382  break;
383  case 10:
384  coerceValue(value, myPointScaleAttr);
385  break;
386  case 11:
387  coerceValue(value, mySliding);
388  break;
389  case 12:
390  coerceValue(value, myAsymTol);
391  break;
392  case 13:
393  coerceValue(value, mySlideEdges);
394  break;
395  case 14:
396  coerceValue(value, myDetectCollisions);
397  break;
398  case 15:
399  coerceValue(value, myRestrictSlides);
400  break;
401  case 16:
402  coerceValue(value, myLimit);
403  break;
404  case 17:
405  coerceValue(value, myStopAtSlideEnd);
406  break;
407  case 18:
408  coerceValue(value, myStopAtPinches);
409  break;
410  case 19:
411  coerceValue(value, myPinchAngle);
412  break;
413  case 20:
414  coerceValue(value, myStopAtCollisions);
415  break;
416  case 21:
417  coerceValue(value, myFilletShape);
418  break;
419  case 22:
420  coerceValue(value, myConvexity);
421  break;
422  case 23:
423  coerceValue(value, myProfileSource);
424  break;
425  case 24:
426  coerceValue(value, myProfileScale);
427  break;
428  case 25:
429  coerceValue(value, myReverseProfile);
430  break;
431  case 26:
432  coerceValue(value, mySymmetrizeProfile);
433  break;
434  case 27:
435  coerceValue(value, myProfileDirection);
436  break;
437  case 28:
438  coerceValue(value, myProfileRamp);
439  break;
440  case 29:
441  coerceValue(value, myFlatBoost);
442  break;
443  case 30:
444  coerceValue(value, myUsePointFilletPolys);
445  break;
446  case 31:
447  coerceValue(value, myPointFilletPolys);
448  break;
449  case 32:
450  coerceValue(value, myUsePointFilletEdges);
451  break;
452  case 33:
453  coerceValue(value, myPointFilletEdges);
454  break;
455  case 34:
456  coerceValue(value, myUseEdgeFilletGroup);
457  break;
458  case 35:
459  coerceValue(value, myEdgeFilletGroup);
460  break;
461  case 36:
462  coerceValue(value, myUseOffsetEdges);
463  break;
464  case 37:
465  coerceValue(value, myOffsetEdges);
466  break;
467  case 38:
468  coerceValue(value, myUseOffsetPoints);
469  break;
470  case 39:
471  coerceValue(value, myOffsetPoints);
472  break;
473  case 40:
474  coerceValue(value, myUseMergedPoints);
475  break;
476  case 41:
477  coerceValue(value, myMergedPoints);
478  break;
479  case 42:
480  coerceValue(value, myProfileSampling);
481  break;
482  case 43:
483  coerceValue(value, myDivisions);
484  break;
485 
486  }
487  }
488 
489  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
490  { doGetParmValue(idx, instance, value); }
491  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
492  { doGetParmValue(idx, instance, value); }
493  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
494  { doGetParmValue(idx, instance, value); }
495  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
496  { doGetParmValue(idx, instance, value); }
497  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
498  { doGetParmValue(idx, instance, value); }
499  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
500  { doGetParmValue(idx, instance, value); }
501  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
502  { doGetParmValue(idx, instance, value); }
503  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
504  { doGetParmValue(idx, instance, value); }
505  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
506  { doGetParmValue(idx, instance, value); }
507  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
508  { doGetParmValue(idx, instance, value); }
509  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
510  { doGetParmValue(idx, instance, value); }
511 
512  template <typename T>
513  void
514  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
515  {
516  if (idx.size() < 1)
517  return;
518  UT_ASSERT(idx.size() == instance.size()+1);
519  if (idx.size() != instance.size()+1)
520  return;
521  switch (idx[0])
522  {
523  case 0:
524  coerceValue(myGroup, value);
525  break;
526  case 1:
527  coerceValue(myGroupType, value);
528  break;
529  case 2:
530  coerceValue(myIgnoreBridges, value);
531  break;
532  case 3:
533  coerceValue(myIgnoreShared, value);
534  break;
535  case 4:
536  coerceValue(myIgnoreFlatEdges, value);
537  break;
538  case 5:
539  coerceValue(myIgnoreFlatPoints, value);
540  break;
541  case 6:
542  coerceValue(myIgnoreInlinePoints, value);
543  break;
544  case 7:
545  coerceValue(myFlatAngle, value);
546  break;
547  case 8:
548  coerceValue(myOffset, value);
549  break;
550  case 9:
551  coerceValue(myUseOffsetScale, value);
552  break;
553  case 10:
554  coerceValue(myPointScaleAttr, value);
555  break;
556  case 11:
557  coerceValue(mySliding, value);
558  break;
559  case 12:
560  coerceValue(myAsymTol, value);
561  break;
562  case 13:
563  coerceValue(mySlideEdges, value);
564  break;
565  case 14:
566  coerceValue(myDetectCollisions, value);
567  break;
568  case 15:
569  coerceValue(myRestrictSlides, value);
570  break;
571  case 16:
572  coerceValue(myLimit, value);
573  break;
574  case 17:
575  coerceValue(myStopAtSlideEnd, value);
576  break;
577  case 18:
578  coerceValue(myStopAtPinches, value);
579  break;
580  case 19:
581  coerceValue(myPinchAngle, value);
582  break;
583  case 20:
584  coerceValue(myStopAtCollisions, value);
585  break;
586  case 21:
587  coerceValue(myFilletShape, value);
588  break;
589  case 22:
590  coerceValue(myConvexity, value);
591  break;
592  case 23:
593  coerceValue(myProfileSource, value);
594  break;
595  case 24:
596  coerceValue(myProfileScale, value);
597  break;
598  case 25:
599  coerceValue(myReverseProfile, value);
600  break;
601  case 26:
602  coerceValue(mySymmetrizeProfile, value);
603  break;
604  case 27:
605  coerceValue(myProfileDirection, value);
606  break;
607  case 28:
608  coerceValue(myProfileRamp, value);
609  break;
610  case 29:
611  coerceValue(myFlatBoost, value);
612  break;
613  case 30:
614  coerceValue(myUsePointFilletPolys, value);
615  break;
616  case 31:
617  coerceValue(myPointFilletPolys, value);
618  break;
619  case 32:
620  coerceValue(myUsePointFilletEdges, value);
621  break;
622  case 33:
623  coerceValue(myPointFilletEdges, value);
624  break;
625  case 34:
626  coerceValue(myUseEdgeFilletGroup, value);
627  break;
628  case 35:
629  coerceValue(myEdgeFilletGroup, value);
630  break;
631  case 36:
632  coerceValue(myUseOffsetEdges, value);
633  break;
634  case 37:
635  coerceValue(myOffsetEdges, value);
636  break;
637  case 38:
638  coerceValue(myUseOffsetPoints, value);
639  break;
640  case 39:
641  coerceValue(myOffsetPoints, value);
642  break;
643  case 40:
644  coerceValue(myUseMergedPoints, value);
645  break;
646  case 41:
647  coerceValue(myMergedPoints, value);
648  break;
649  case 42:
650  coerceValue(myProfileSampling, value);
651  break;
652  case 43:
653  coerceValue(myDivisions, value);
654  break;
655 
656  }
657  }
658 
659  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
660  { doSetParmValue(idx, instance, value); }
661  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
662  { doSetParmValue(idx, instance, value); }
663  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
664  { doSetParmValue(idx, instance, value); }
665  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
666  { doSetParmValue(idx, instance, value); }
667  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
668  { doSetParmValue(idx, instance, value); }
669  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
670  { doSetParmValue(idx, instance, value); }
671  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
672  { doSetParmValue(idx, instance, value); }
673  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
674  { doSetParmValue(idx, instance, value); }
675  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
676  { doSetParmValue(idx, instance, value); }
677  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
678  { doSetParmValue(idx, instance, value); }
679  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
680  { doSetParmValue(idx, instance, value); }
681 
682  exint getNestNumParms(TempIndex idx) const override
683  {
684  if (idx.size() == 0)
685  return 44;
686  switch (idx[0])
687  {
688 
689  }
690  // Invalid
691  return 0;
692  }
693 
694  const char *getNestParmName(TempIndex fieldnum) const override
695  {
696  if (fieldnum.size() < 1)
697  return 0;
698  switch (fieldnum[0])
699  {
700  case 0:
701  return "group";
702  case 1:
703  return "grouptype";
704  case 2:
705  return "ignorebridgededges";
706  case 3:
707  return "ignoresharededges";
708  case 4:
709  return "ignoreflatedges";
710  case 5:
711  return "ignoreflatpoints";
712  case 6:
713  return "ignoreinlinepoints";
714  case 7:
715  return "flatangle";
716  case 8:
717  return "offset";
718  case 9:
719  return "useoffsetscale";
720  case 10:
721  return "pointscaleattr";
722  case 11:
723  return "sliding";
724  case 12:
725  return "asymtol";
726  case 13:
727  return "slideedges";
728  case 14:
729  return "detectcollisions";
730  case 15:
731  return "restrictslides";
732  case 16:
733  return "limit";
734  case 17:
735  return "stopatslideend";
736  case 18:
737  return "stopatpinches";
738  case 19:
739  return "pinchangle";
740  case 20:
741  return "stopatcollisions";
742  case 21:
743  return "filletshape";
744  case 22:
745  return "convexity";
746  case 23:
747  return "profilesource";
748  case 24:
749  return "profilescale";
750  case 25:
751  return "reverseprofile";
752  case 26:
753  return "symmetrizeprofile";
754  case 27:
755  return "profiledirection";
756  case 28:
757  return "profileramp";
758  case 29:
759  return "flatboost";
760  case 30:
761  return "useptfilletgroup";
762  case 31:
763  return "ptfilletgroup";
764  case 32:
765  return "useptfilletedges";
766  case 33:
767  return "ptfilletedges";
768  case 34:
769  return "useedgefilletgroup";
770  case 35:
771  return "edgeprims";
772  case 36:
773  return "useoffsetedges";
774  case 37:
775  return "offsetedges";
776  case 38:
777  return "useoffsetpoints";
778  case 39:
779  return "offsetpoints";
780  case 40:
781  return "usemergedpoints";
782  case 41:
783  return "mergedpoints";
784  case 42:
785  return "profilesampling";
786  case 43:
787  return "divisions";
788 
789  }
790  return 0;
791  }
792 
793  ParmType getNestParmType(TempIndex fieldnum) const override
794  {
795  if (fieldnum.size() < 1)
796  return PARM_UNSUPPORTED;
797  switch (fieldnum[0])
798  {
799  case 0:
800  return PARM_STRING;
801  case 1:
802  return PARM_INTEGER;
803  case 2:
804  return PARM_INTEGER;
805  case 3:
806  return PARM_INTEGER;
807  case 4:
808  return PARM_INTEGER;
809  case 5:
810  return PARM_INTEGER;
811  case 6:
812  return PARM_INTEGER;
813  case 7:
814  return PARM_FLOAT;
815  case 8:
816  return PARM_FLOAT;
817  case 9:
818  return PARM_INTEGER;
819  case 10:
820  return PARM_STRING;
821  case 11:
822  return PARM_INTEGER;
823  case 12:
824  return PARM_FLOAT;
825  case 13:
826  return PARM_STRING;
827  case 14:
828  return PARM_INTEGER;
829  case 15:
830  return PARM_INTEGER;
831  case 16:
832  return PARM_INTEGER;
833  case 17:
834  return PARM_INTEGER;
835  case 18:
836  return PARM_INTEGER;
837  case 19:
838  return PARM_FLOAT;
839  case 20:
840  return PARM_INTEGER;
841  case 21:
842  return PARM_INTEGER;
843  case 22:
844  return PARM_FLOAT;
845  case 23:
846  return PARM_INTEGER;
847  case 24:
848  return PARM_FLOAT;
849  case 25:
850  return PARM_INTEGER;
851  case 26:
852  return PARM_INTEGER;
853  case 27:
854  return PARM_STRING;
855  case 28:
856  return PARM_RAMP;
857  case 29:
858  return PARM_FLOAT;
859  case 30:
860  return PARM_INTEGER;
861  case 31:
862  return PARM_STRING;
863  case 32:
864  return PARM_INTEGER;
865  case 33:
866  return PARM_STRING;
867  case 34:
868  return PARM_INTEGER;
869  case 35:
870  return PARM_STRING;
871  case 36:
872  return PARM_INTEGER;
873  case 37:
874  return PARM_STRING;
875  case 38:
876  return PARM_INTEGER;
877  case 39:
878  return PARM_STRING;
879  case 40:
880  return PARM_INTEGER;
881  case 41:
882  return PARM_STRING;
883  case 42:
884  return PARM_INTEGER;
885  case 43:
886  return PARM_INTEGER;
887 
888  }
889  return PARM_UNSUPPORTED;
890  }
891 
892  // Boiler plate to load individual types.
893  static void loadData(UT_IStream &is, int64 &v)
894  { is.bread(&v, 1); }
895  static void loadData(UT_IStream &is, bool &v)
896  { int64 iv; is.bread(&iv, 1); v = iv; }
897  static void loadData(UT_IStream &is, fpreal64 &v)
898  { is.bread<fpreal64>(&v, 1); }
899  static void loadData(UT_IStream &is, UT_Vector2D &v)
900  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
901  static void loadData(UT_IStream &is, UT_Vector3D &v)
902  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
903  is.bread<fpreal64>(&v.z(), 1); }
904  static void loadData(UT_IStream &is, UT_Vector4D &v)
905  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
906  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
907  static void loadData(UT_IStream &is, UT_Matrix2D &v)
908  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
909  static void loadData(UT_IStream &is, UT_Matrix3D &v)
910  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
911  static void loadData(UT_IStream &is, UT_Matrix4D &v)
912  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
913  static void loadData(UT_IStream &is, UT_Vector2I &v)
914  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
915  static void loadData(UT_IStream &is, UT_Vector3I &v)
916  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
917  is.bread<int64>(&v.z(), 1); }
918  static void loadData(UT_IStream &is, UT_Vector4I &v)
919  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
920  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
922  { is.bread(v); }
924  { UT_StringHolder rampdata;
925  loadData(is, rampdata);
926  if (rampdata.isstring())
927  {
928  v.reset(new UT_Ramp());
929  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
930  v->load(istr);
931  }
932  else v.reset();
933  }
936  loadData(is, data);
937  if (data.isstring())
938  {
939  // Find the data type.
940  const char *colon = UT_StringWrap(data).findChar(':');
941  if (colon)
942  {
943  int typelen = colon - data.buffer();
945  type.strncpy(data.buffer(), typelen);
946  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
947 
948  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
949  }
950  }
951  else v.reset();
952  }
953 
954  static void saveData(std::ostream &os, int64 v)
955  { UTwrite(os, &v); }
956  static void saveData(std::ostream &os, bool v)
957  { int64 iv = v; UTwrite(os, &iv); }
958  static void saveData(std::ostream &os, fpreal64 v)
959  { UTwrite<fpreal64>(os, &v); }
960  static void saveData(std::ostream &os, UT_Vector2D v)
961  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
962  static void saveData(std::ostream &os, UT_Vector3D v)
963  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
964  UTwrite<fpreal64>(os, &v.z()); }
965  static void saveData(std::ostream &os, UT_Vector4D v)
966  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
967  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
968  static void saveData(std::ostream &os, UT_Matrix2D v)
970  static void saveData(std::ostream &os, UT_Matrix3D v)
972  static void saveData(std::ostream &os, UT_Matrix4D v)
974  static void saveData(std::ostream &os, UT_StringHolder s)
975  { UT_StringWrap(s).saveBinary(os); }
976  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
978  UT_OStringStream ostr;
979  if (s) s->save(ostr);
980  result = ostr.str();
981  saveData(os, result);
982  }
983  static void saveData(std::ostream &os, PRM_DataItemHandle s)
985  UT_OStringStream ostr;
986  if (s)
987  {
988  ostr << s->getDataTypeToken();
989  ostr << ":";
990  s->saveBinary(ostr);
991  }
992  result = ostr.str();
993  saveData(os, result);
994  }
995 
996 
997  void save(std::ostream &os) const
998  {
999  int32 v = version();
1000  UTwrite(os, &v);
1001  saveData(os, myGroup);
1002  saveData(os, myGroupType);
1003  saveData(os, myIgnoreBridges);
1004  saveData(os, myIgnoreShared);
1005  saveData(os, myIgnoreFlatEdges);
1006  saveData(os, myIgnoreFlatPoints);
1007  saveData(os, myIgnoreInlinePoints);
1008  saveData(os, myFlatAngle);
1009  saveData(os, myOffset);
1010  saveData(os, myUseOffsetScale);
1011  saveData(os, myPointScaleAttr);
1012  saveData(os, mySliding);
1013  saveData(os, myAsymTol);
1014  saveData(os, mySlideEdges);
1015  saveData(os, myDetectCollisions);
1016  saveData(os, myRestrictSlides);
1017  saveData(os, myLimit);
1018  saveData(os, myStopAtSlideEnd);
1019  saveData(os, myStopAtPinches);
1020  saveData(os, myPinchAngle);
1021  saveData(os, myStopAtCollisions);
1022  saveData(os, myFilletShape);
1023  saveData(os, myConvexity);
1024  saveData(os, myProfileSource);
1025  saveData(os, myProfileScale);
1026  saveData(os, myReverseProfile);
1027  saveData(os, mySymmetrizeProfile);
1028  saveData(os, myProfileDirection);
1029  saveData(os, myProfileRamp);
1030  saveData(os, myFlatBoost);
1031  saveData(os, myUsePointFilletPolys);
1032  saveData(os, myPointFilletPolys);
1033  saveData(os, myUsePointFilletEdges);
1034  saveData(os, myPointFilletEdges);
1035  saveData(os, myUseEdgeFilletGroup);
1036  saveData(os, myEdgeFilletGroup);
1037  saveData(os, myUseOffsetEdges);
1038  saveData(os, myOffsetEdges);
1039  saveData(os, myUseOffsetPoints);
1040  saveData(os, myOffsetPoints);
1041  saveData(os, myUseMergedPoints);
1042  saveData(os, myMergedPoints);
1043  saveData(os, myProfileSampling);
1044  saveData(os, myDivisions);
1045 
1046  }
1047 
1048  bool load(UT_IStream &is)
1049  {
1050  int32 v;
1051  is.bread(&v, 1);
1052  if (version() != v)
1053  {
1054  // Fail incompatible versions
1055  return false;
1056  }
1057  loadData(is, myGroup);
1058  loadData(is, myGroupType);
1059  loadData(is, myIgnoreBridges);
1060  loadData(is, myIgnoreShared);
1061  loadData(is, myIgnoreFlatEdges);
1062  loadData(is, myIgnoreFlatPoints);
1063  loadData(is, myIgnoreInlinePoints);
1064  loadData(is, myFlatAngle);
1065  loadData(is, myOffset);
1066  loadData(is, myUseOffsetScale);
1067  loadData(is, myPointScaleAttr);
1068  loadData(is, mySliding);
1069  loadData(is, myAsymTol);
1070  loadData(is, mySlideEdges);
1071  loadData(is, myDetectCollisions);
1072  loadData(is, myRestrictSlides);
1073  loadData(is, myLimit);
1074  loadData(is, myStopAtSlideEnd);
1075  loadData(is, myStopAtPinches);
1076  loadData(is, myPinchAngle);
1077  loadData(is, myStopAtCollisions);
1078  loadData(is, myFilletShape);
1079  loadData(is, myConvexity);
1080  loadData(is, myProfileSource);
1081  loadData(is, myProfileScale);
1082  loadData(is, myReverseProfile);
1083  loadData(is, mySymmetrizeProfile);
1084  loadData(is, myProfileDirection);
1085  loadData(is, myProfileRamp);
1086  loadData(is, myFlatBoost);
1087  loadData(is, myUsePointFilletPolys);
1088  loadData(is, myPointFilletPolys);
1089  loadData(is, myUsePointFilletEdges);
1090  loadData(is, myPointFilletEdges);
1091  loadData(is, myUseEdgeFilletGroup);
1092  loadData(is, myEdgeFilletGroup);
1093  loadData(is, myUseOffsetEdges);
1094  loadData(is, myOffsetEdges);
1095  loadData(is, myUseOffsetPoints);
1096  loadData(is, myOffsetPoints);
1097  loadData(is, myUseMergedPoints);
1098  loadData(is, myMergedPoints);
1099  loadData(is, myProfileSampling);
1100  loadData(is, myDivisions);
1101 
1102  return true;
1103  }
1104 
1105  const UT_StringHolder & getGroup() const { return myGroup; }
1106  void setGroup(const UT_StringHolder & val) { myGroup = val; }
1108  {
1109  SOP_Node *thissop = cookparms.getNode();
1110  if (!thissop) return getGroup();
1112  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
1113  return result;
1114  }
1115  GroupType getGroupType() const { return GroupType(myGroupType); }
1116  void setGroupType(GroupType val) { myGroupType = int64(val); }
1118  {
1119  SOP_Node *thissop = cookparms.getNode();
1120  if (!thissop) return getGroupType();
1121  int64 result;
1122  OP_Utils::evalOpParm(result, thissop, "grouptype", cookparms.getCookTime(), 0);
1123  return GroupType(result);
1124  }
1125  bool getIgnoreBridges() const { return myIgnoreBridges; }
1126  void setIgnoreBridges(bool val) { myIgnoreBridges = val; }
1127  bool opIgnoreBridges(const SOP_NodeVerb::CookParms &cookparms) const
1128  {
1129  SOP_Node *thissop = cookparms.getNode();
1130  if (!thissop) return getIgnoreBridges();
1131  bool result;
1132  OP_Utils::evalOpParm(result, thissop, "ignorebridgededges", cookparms.getCookTime(), 0);
1133  return result;
1134  }
1135  bool getIgnoreShared() const { return myIgnoreShared; }
1136  void setIgnoreShared(bool val) { myIgnoreShared = val; }
1137  bool opIgnoreShared(const SOP_NodeVerb::CookParms &cookparms) const
1138  {
1139  SOP_Node *thissop = cookparms.getNode();
1140  if (!thissop) return getIgnoreShared();
1141  bool result;
1142  OP_Utils::evalOpParm(result, thissop, "ignoresharededges", cookparms.getCookTime(), 0);
1143  return result;
1144  }
1145  bool getIgnoreFlatEdges() const { return myIgnoreFlatEdges; }
1146  void setIgnoreFlatEdges(bool val) { myIgnoreFlatEdges = val; }
1147  bool opIgnoreFlatEdges(const SOP_NodeVerb::CookParms &cookparms) const
1148  {
1149  SOP_Node *thissop = cookparms.getNode();
1150  if (!thissop) return getIgnoreFlatEdges();
1151  bool result;
1152  OP_Utils::evalOpParm(result, thissop, "ignoreflatedges", cookparms.getCookTime(), 0);
1153  return result;
1154  }
1155  bool getIgnoreFlatPoints() const { return myIgnoreFlatPoints; }
1156  void setIgnoreFlatPoints(bool val) { myIgnoreFlatPoints = val; }
1157  bool opIgnoreFlatPoints(const SOP_NodeVerb::CookParms &cookparms) const
1158  {
1159  SOP_Node *thissop = cookparms.getNode();
1160  if (!thissop) return getIgnoreFlatPoints();
1161  bool result;
1162  OP_Utils::evalOpParm(result, thissop, "ignoreflatpoints", cookparms.getCookTime(), 0);
1163  return result;
1164  }
1165  bool getIgnoreInlinePoints() const { return myIgnoreInlinePoints; }
1166  void setIgnoreInlinePoints(bool val) { myIgnoreInlinePoints = val; }
1167  bool opIgnoreInlinePoints(const SOP_NodeVerb::CookParms &cookparms) const
1168  {
1169  SOP_Node *thissop = cookparms.getNode();
1170  if (!thissop) return getIgnoreInlinePoints();
1171  bool result;
1172  OP_Utils::evalOpParm(result, thissop, "ignoreinlinepoints", cookparms.getCookTime(), 0);
1173  return result;
1174  }
1175  fpreal64 getFlatAngle() const { return myFlatAngle; }
1176  void setFlatAngle(fpreal64 val) { myFlatAngle = val; }
1178  {
1179  SOP_Node *thissop = cookparms.getNode();
1180  if (!thissop) return getFlatAngle();
1181  fpreal64 result;
1182  OP_Utils::evalOpParm(result, thissop, "flatangle", cookparms.getCookTime(), 0);
1183  return result;
1184  }
1185  fpreal64 getOffset() const { return myOffset; }
1186  void setOffset(fpreal64 val) { myOffset = val; }
1188  {
1189  SOP_Node *thissop = cookparms.getNode();
1190  if (!thissop) return getOffset();
1191  fpreal64 result;
1192  OP_Utils::evalOpParm(result, thissop, "offset", cookparms.getCookTime(), 0);
1193  return result;
1194  }
1195  UseOffsetScale getUseOffsetScale() const { return UseOffsetScale(myUseOffsetScale); }
1196  void setUseOffsetScale(UseOffsetScale val) { myUseOffsetScale = int64(val); }
1198  {
1199  SOP_Node *thissop = cookparms.getNode();
1200  if (!thissop) return getUseOffsetScale();
1201  int64 result;
1202  OP_Utils::evalOpParm(result, thissop, "useoffsetscale", cookparms.getCookTime(), 0);
1203  return UseOffsetScale(result);
1204  }
1205  const UT_StringHolder & getPointScaleAttr() const { return myPointScaleAttr; }
1206  void setPointScaleAttr(const UT_StringHolder & val) { myPointScaleAttr = val; }
1208  {
1209  SOP_Node *thissop = cookparms.getNode();
1210  if (!thissop) return getPointScaleAttr();
1212  OP_Utils::evalOpParm(result, thissop, "pointscaleattr", cookparms.getCookTime(), 0);
1213  return result;
1214  }
1215  Sliding getSliding() const { return Sliding(mySliding); }
1216  void setSliding(Sliding val) { mySliding = int64(val); }
1218  {
1219  SOP_Node *thissop = cookparms.getNode();
1220  if (!thissop) return getSliding();
1221  int64 result;
1222  OP_Utils::evalOpParm(result, thissop, "sliding", cookparms.getCookTime(), 0);
1223  return Sliding(result);
1224  }
1225  fpreal64 getAsymTol() const { return myAsymTol; }
1226  void setAsymTol(fpreal64 val) { myAsymTol = val; }
1228  {
1229  SOP_Node *thissop = cookparms.getNode();
1230  if (!thissop) return getAsymTol();
1231  fpreal64 result;
1232  OP_Utils::evalOpParm(result, thissop, "asymtol", cookparms.getCookTime(), 0);
1233  return result;
1234  }
1235  const UT_StringHolder & getSlideEdges() const { return mySlideEdges; }
1236  void setSlideEdges(const UT_StringHolder & val) { mySlideEdges = val; }
1238  {
1239  SOP_Node *thissop = cookparms.getNode();
1240  if (!thissop) return getSlideEdges();
1242  OP_Utils::evalOpParm(result, thissop, "slideedges", cookparms.getCookTime(), 0);
1243  return result;
1244  }
1245  bool getDetectCollisions() const { return myDetectCollisions; }
1246  void setDetectCollisions(bool val) { myDetectCollisions = val; }
1247  bool opDetectCollisions(const SOP_NodeVerb::CookParms &cookparms) const
1248  {
1249  SOP_Node *thissop = cookparms.getNode();
1250  if (!thissop) return getDetectCollisions();
1251  bool result;
1252  OP_Utils::evalOpParm(result, thissop, "detectcollisions", cookparms.getCookTime(), 0);
1253  return result;
1254  }
1255  bool getRestrictSlides() const { return myRestrictSlides; }
1256  void setRestrictSlides(bool val) { myRestrictSlides = val; }
1257  bool opRestrictSlides(const SOP_NodeVerb::CookParms &cookparms) const
1258  {
1259  SOP_Node *thissop = cookparms.getNode();
1260  if (!thissop) return getRestrictSlides();
1261  bool result;
1262  OP_Utils::evalOpParm(result, thissop, "restrictslides", cookparms.getCookTime(), 0);
1263  return result;
1264  }
1265  Limit getLimit() const { return Limit(myLimit); }
1266  void setLimit(Limit val) { myLimit = int64(val); }
1267  Limit opLimit(const SOP_NodeVerb::CookParms &cookparms) const
1268  {
1269  SOP_Node *thissop = cookparms.getNode();
1270  if (!thissop) return getLimit();
1271  int64 result;
1272  OP_Utils::evalOpParm(result, thissop, "limit", cookparms.getCookTime(), 0);
1273  return Limit(result);
1274  }
1275  bool getStopAtSlideEnd() const { return myStopAtSlideEnd; }
1276  void setStopAtSlideEnd(bool val) { myStopAtSlideEnd = val; }
1277  bool opStopAtSlideEnd(const SOP_NodeVerb::CookParms &cookparms) const
1278  {
1279  SOP_Node *thissop = cookparms.getNode();
1280  if (!thissop) return getStopAtSlideEnd();
1281  bool result;
1282  OP_Utils::evalOpParm(result, thissop, "stopatslideend", cookparms.getCookTime(), 0);
1283  return result;
1284  }
1285  bool getStopAtPinches() const { return myStopAtPinches; }
1286  void setStopAtPinches(bool val) { myStopAtPinches = val; }
1287  bool opStopAtPinches(const SOP_NodeVerb::CookParms &cookparms) const
1288  {
1289  SOP_Node *thissop = cookparms.getNode();
1290  if (!thissop) return getStopAtPinches();
1291  bool result;
1292  OP_Utils::evalOpParm(result, thissop, "stopatpinches", cookparms.getCookTime(), 0);
1293  return result;
1294  }
1295  fpreal64 getPinchAngle() const { return myPinchAngle; }
1296  void setPinchAngle(fpreal64 val) { myPinchAngle = val; }
1298  {
1299  SOP_Node *thissop = cookparms.getNode();
1300  if (!thissop) return getPinchAngle();
1301  fpreal64 result;
1302  OP_Utils::evalOpParm(result, thissop, "pinchangle", cookparms.getCookTime(), 0);
1303  return result;
1304  }
1305  bool getStopAtCollisions() const { return myStopAtCollisions; }
1306  void setStopAtCollisions(bool val) { myStopAtCollisions = val; }
1307  bool opStopAtCollisions(const SOP_NodeVerb::CookParms &cookparms) const
1308  {
1309  SOP_Node *thissop = cookparms.getNode();
1310  if (!thissop) return getStopAtCollisions();
1311  bool result;
1312  OP_Utils::evalOpParm(result, thissop, "stopatcollisions", cookparms.getCookTime(), 0);
1313  return result;
1314  }
1315  FilletShape getFilletShape() const { return FilletShape(myFilletShape); }
1316  void setFilletShape(FilletShape val) { myFilletShape = int64(val); }
1318  {
1319  SOP_Node *thissop = cookparms.getNode();
1320  if (!thissop) return getFilletShape();
1321  int64 result;
1322  OP_Utils::evalOpParm(result, thissop, "filletshape", cookparms.getCookTime(), 0);
1323  return FilletShape(result);
1324  }
1325  fpreal64 getConvexity() const { return myConvexity; }
1326  void setConvexity(fpreal64 val) { myConvexity = val; }
1328  {
1329  SOP_Node *thissop = cookparms.getNode();
1330  if (!thissop) return getConvexity();
1331  fpreal64 result;
1332  OP_Utils::evalOpParm(result, thissop, "convexity", cookparms.getCookTime(), 0);
1333  return result;
1334  }
1335  ProfileSource getProfileSource() const { return ProfileSource(myProfileSource); }
1336  void setProfileSource(ProfileSource val) { myProfileSource = int64(val); }
1338  {
1339  SOP_Node *thissop = cookparms.getNode();
1340  if (!thissop) return getProfileSource();
1341  int64 result;
1342  OP_Utils::evalOpParm(result, thissop, "profilesource", cookparms.getCookTime(), 0);
1343  return ProfileSource(result);
1344  }
1345  fpreal64 getProfileScale() const { return myProfileScale; }
1346  void setProfileScale(fpreal64 val) { myProfileScale = val; }
1348  {
1349  SOP_Node *thissop = cookparms.getNode();
1350  if (!thissop) return getProfileScale();
1351  fpreal64 result;
1352  OP_Utils::evalOpParm(result, thissop, "profilescale", cookparms.getCookTime(), 0);
1353  return result;
1354  }
1355  bool getReverseProfile() const { return myReverseProfile; }
1356  void setReverseProfile(bool val) { myReverseProfile = val; }
1357  bool opReverseProfile(const SOP_NodeVerb::CookParms &cookparms) const
1358  {
1359  SOP_Node *thissop = cookparms.getNode();
1360  if (!thissop) return getReverseProfile();
1361  bool result;
1362  OP_Utils::evalOpParm(result, thissop, "reverseprofile", cookparms.getCookTime(), 0);
1363  return result;
1364  }
1365  bool getSymmetrizeProfile() const { return mySymmetrizeProfile; }
1366  void setSymmetrizeProfile(bool val) { mySymmetrizeProfile = val; }
1367  bool opSymmetrizeProfile(const SOP_NodeVerb::CookParms &cookparms) const
1368  {
1369  SOP_Node *thissop = cookparms.getNode();
1370  if (!thissop) return getSymmetrizeProfile();
1371  bool result;
1372  OP_Utils::evalOpParm(result, thissop, "symmetrizeprofile", cookparms.getCookTime(), 0);
1373  return result;
1374  }
1375  const UT_StringHolder & getProfileDirection() const { return myProfileDirection; }
1376  void setProfileDirection(const UT_StringHolder & val) { myProfileDirection = val; }
1378  {
1379  SOP_Node *thissop = cookparms.getNode();
1380  if (!thissop) return getProfileDirection();
1382  OP_Utils::evalOpParm(result, thissop, "profiledirection", cookparms.getCookTime(), 0);
1383  return result;
1384  }
1385  UT_SharedPtr<UT_Ramp> getProfileRamp() const { return myProfileRamp; }
1386  void setProfileRamp(UT_SharedPtr<UT_Ramp> val) { myProfileRamp = val; }
1388  {
1389  SOP_Node *thissop = cookparms.getNode();
1390  if (!thissop) return getProfileRamp();
1392  OP_Utils::evalOpParm(result, thissop, "profileramp", cookparms.getCookTime(), 0);
1393  return result;
1394  }
1395  fpreal64 getFlatBoost() const { return myFlatBoost; }
1396  void setFlatBoost(fpreal64 val) { myFlatBoost = val; }
1398  {
1399  SOP_Node *thissop = cookparms.getNode();
1400  if (!thissop) return getFlatBoost();
1401  fpreal64 result;
1402  OP_Utils::evalOpParm(result, thissop, "flatboost", cookparms.getCookTime(), 0);
1403  return result;
1404  }
1405  bool getUsePointFilletPolys() const { return myUsePointFilletPolys; }
1406  void setUsePointFilletPolys(bool val) { myUsePointFilletPolys = val; }
1407  bool opUsePointFilletPolys(const SOP_NodeVerb::CookParms &cookparms) const
1408  {
1409  SOP_Node *thissop = cookparms.getNode();
1410  if (!thissop) return getUsePointFilletPolys();
1411  bool result;
1412  OP_Utils::evalOpParm(result, thissop, "useptfilletgroup", cookparms.getCookTime(), 0);
1413  return result;
1414  }
1415  const UT_StringHolder & getPointFilletPolys() const { return myPointFilletPolys; }
1416  void setPointFilletPolys(const UT_StringHolder & val) { myPointFilletPolys = val; }
1418  {
1419  SOP_Node *thissop = cookparms.getNode();
1420  if (!thissop) return getPointFilletPolys();
1422  OP_Utils::evalOpParm(result, thissop, "ptfilletgroup", cookparms.getCookTime(), 0);
1423  return result;
1424  }
1425  bool getUsePointFilletEdges() const { return myUsePointFilletEdges; }
1426  void setUsePointFilletEdges(bool val) { myUsePointFilletEdges = val; }
1427  bool opUsePointFilletEdges(const SOP_NodeVerb::CookParms &cookparms) const
1428  {
1429  SOP_Node *thissop = cookparms.getNode();
1430  if (!thissop) return getUsePointFilletEdges();
1431  bool result;
1432  OP_Utils::evalOpParm(result, thissop, "useptfilletedges", cookparms.getCookTime(), 0);
1433  return result;
1434  }
1435  const UT_StringHolder & getPointFilletEdges() const { return myPointFilletEdges; }
1436  void setPointFilletEdges(const UT_StringHolder & val) { myPointFilletEdges = val; }
1438  {
1439  SOP_Node *thissop = cookparms.getNode();
1440  if (!thissop) return getPointFilletEdges();
1442  OP_Utils::evalOpParm(result, thissop, "ptfilletedges", cookparms.getCookTime(), 0);
1443  return result;
1444  }
1445  bool getUseEdgeFilletGroup() const { return myUseEdgeFilletGroup; }
1446  void setUseEdgeFilletGroup(bool val) { myUseEdgeFilletGroup = val; }
1447  bool opUseEdgeFilletGroup(const SOP_NodeVerb::CookParms &cookparms) const
1448  {
1449  SOP_Node *thissop = cookparms.getNode();
1450  if (!thissop) return getUseEdgeFilletGroup();
1451  bool result;
1452  OP_Utils::evalOpParm(result, thissop, "useedgefilletgroup", cookparms.getCookTime(), 0);
1453  return result;
1454  }
1455  const UT_StringHolder & getEdgeFilletGroup() const { return myEdgeFilletGroup; }
1456  void setEdgeFilletGroup(const UT_StringHolder & val) { myEdgeFilletGroup = val; }
1458  {
1459  SOP_Node *thissop = cookparms.getNode();
1460  if (!thissop) return getEdgeFilletGroup();
1462  OP_Utils::evalOpParm(result, thissop, "edgeprims", cookparms.getCookTime(), 0);
1463  return result;
1464  }
1465  bool getUseOffsetEdges() const { return myUseOffsetEdges; }
1466  void setUseOffsetEdges(bool val) { myUseOffsetEdges = val; }
1467  bool opUseOffsetEdges(const SOP_NodeVerb::CookParms &cookparms) const
1468  {
1469  SOP_Node *thissop = cookparms.getNode();
1470  if (!thissop) return getUseOffsetEdges();
1471  bool result;
1472  OP_Utils::evalOpParm(result, thissop, "useoffsetedges", cookparms.getCookTime(), 0);
1473  return result;
1474  }
1475  const UT_StringHolder & getOffsetEdges() const { return myOffsetEdges; }
1476  void setOffsetEdges(const UT_StringHolder & val) { myOffsetEdges = val; }
1478  {
1479  SOP_Node *thissop = cookparms.getNode();
1480  if (!thissop) return getOffsetEdges();
1482  OP_Utils::evalOpParm(result, thissop, "offsetedges", cookparms.getCookTime(), 0);
1483  return result;
1484  }
1485  bool getUseOffsetPoints() const { return myUseOffsetPoints; }
1486  void setUseOffsetPoints(bool val) { myUseOffsetPoints = val; }
1487  bool opUseOffsetPoints(const SOP_NodeVerb::CookParms &cookparms) const
1488  {
1489  SOP_Node *thissop = cookparms.getNode();
1490  if (!thissop) return getUseOffsetPoints();
1491  bool result;
1492  OP_Utils::evalOpParm(result, thissop, "useoffsetpoints", cookparms.getCookTime(), 0);
1493  return result;
1494  }
1495  const UT_StringHolder & getOffsetPoints() const { return myOffsetPoints; }
1496  void setOffsetPoints(const UT_StringHolder & val) { myOffsetPoints = val; }
1498  {
1499  SOP_Node *thissop = cookparms.getNode();
1500  if (!thissop) return getOffsetPoints();
1502  OP_Utils::evalOpParm(result, thissop, "offsetpoints", cookparms.getCookTime(), 0);
1503  return result;
1504  }
1505  bool getUseMergedPoints() const { return myUseMergedPoints; }
1506  void setUseMergedPoints(bool val) { myUseMergedPoints = val; }
1507  bool opUseMergedPoints(const SOP_NodeVerb::CookParms &cookparms) const
1508  {
1509  SOP_Node *thissop = cookparms.getNode();
1510  if (!thissop) return getUseMergedPoints();
1511  bool result;
1512  OP_Utils::evalOpParm(result, thissop, "usemergedpoints", cookparms.getCookTime(), 0);
1513  return result;
1514  }
1515  const UT_StringHolder & getMergedPoints() const { return myMergedPoints; }
1516  void setMergedPoints(const UT_StringHolder & val) { myMergedPoints = val; }
1518  {
1519  SOP_Node *thissop = cookparms.getNode();
1520  if (!thissop) return getMergedPoints();
1522  OP_Utils::evalOpParm(result, thissop, "mergedpoints", cookparms.getCookTime(), 0);
1523  return result;
1524  }
1525  ProfileSampling getProfileSampling() const { return ProfileSampling(myProfileSampling); }
1526  void setProfileSampling(ProfileSampling val) { myProfileSampling = int64(val); }
1528  {
1529  SOP_Node *thissop = cookparms.getNode();
1530  if (!thissop) return getProfileSampling();
1531  int64 result;
1532  OP_Utils::evalOpParm(result, thissop, "profilesampling", cookparms.getCookTime(), 0);
1533  return ProfileSampling(result);
1534  }
1535  int64 getDivisions() const { return myDivisions; }
1536  void setDivisions(int64 val) { myDivisions = val; }
1538  {
1539  SOP_Node *thissop = cookparms.getNode();
1540  if (!thissop) return getDivisions();
1541  int64 result;
1542  OP_Utils::evalOpParm(result, thissop, "divisions", cookparms.getCookTime(), 0);
1543  return result;
1544  }
1545 
1546 private:
1547  UT_StringHolder myGroup;
1548  int64 myGroupType;
1549  bool myIgnoreBridges;
1550  bool myIgnoreShared;
1551  bool myIgnoreFlatEdges;
1552  bool myIgnoreFlatPoints;
1553  bool myIgnoreInlinePoints;
1554  fpreal64 myFlatAngle;
1555  fpreal64 myOffset;
1556  int64 myUseOffsetScale;
1557  UT_StringHolder myPointScaleAttr;
1558  int64 mySliding;
1559  fpreal64 myAsymTol;
1560  UT_StringHolder mySlideEdges;
1561  bool myDetectCollisions;
1562  bool myRestrictSlides;
1563  int64 myLimit;
1564  bool myStopAtSlideEnd;
1565  bool myStopAtPinches;
1566  fpreal64 myPinchAngle;
1567  bool myStopAtCollisions;
1568  int64 myFilletShape;
1569  fpreal64 myConvexity;
1570  int64 myProfileSource;
1571  fpreal64 myProfileScale;
1572  bool myReverseProfile;
1573  bool mySymmetrizeProfile;
1574  UT_StringHolder myProfileDirection;
1575  UT_SharedPtr<UT_Ramp> myProfileRamp;
1576  fpreal64 myFlatBoost;
1577  bool myUsePointFilletPolys;
1578  UT_StringHolder myPointFilletPolys;
1579  bool myUsePointFilletEdges;
1580  UT_StringHolder myPointFilletEdges;
1581  bool myUseEdgeFilletGroup;
1582  UT_StringHolder myEdgeFilletGroup;
1583  bool myUseOffsetEdges;
1584  UT_StringHolder myOffsetEdges;
1585  bool myUseOffsetPoints;
1586  UT_StringHolder myOffsetPoints;
1587  bool myUseMergedPoints;
1588  UT_StringHolder myMergedPoints;
1589  int64 myProfileSampling;
1590  int64 myDivisions;
1591 
1592 };
GLdouble s
Definition: glew.h:1390
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
FilletShape opFilletShape(const SOP_NodeVerb::CookParms &cookparms) const
void setSlideEdges(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Vector2I &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
exint nodeIdx() const
Definition: SOP_NodeVerb.h:114
static void saveData(std::ostream &os, UT_Matrix4D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
fpreal64 opFlatAngle(const SOP_NodeVerb::CookParms &cookparms) const
GLenum src
Definition: glew.h:2410
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:640
static void loadData(UT_IStream &is, bool &v)
bool operator==(const SOP_PolyBevel_3_0Parms &src) const
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
const UT_StringHolder & getProfileDirection() const
bool opUseEdgeFilletGroup(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector2D &v)
bool operator!=(const SOP_PolyBevel_3_0Parms &src) const
bool opRestrictSlides(const SOP_NodeVerb::CookParms &cookparms) const
ProfileSource getProfileSource() const
void setOffsetPoints(const UT_StringHolder &val)
bool opDetectCollisions(const SOP_NodeVerb::CookParms &cookparms) const
void setMergedPoints(const UT_StringHolder &val)
exint bread(int32 *buffer, exint asize=1)
GT_API const UT_StringHolder time
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
fpreal getTime() const
Definition: OP_Context.h:60
GLuint const GLfloat * val
Definition: glew.h:2794
void setProfileDirection(const UT_StringHolder &val)
bool opUsePointFilletEdges(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getPointFilletPolys() const
FilletShape getFilletShape() const
void setProfileRamp(UT_SharedPtr< UT_Ramp > val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
void setGroup(const UT_StringHolder &val)
int64 exint
Definition: SYS_Types.h:125
fpreal64 opPinchAngle(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix4D &v)
SYS_FORCE_INLINE const char * buffer() const
GroupType opGroupType(const SOP_NodeVerb::CookParms &cookparms) const
const SOP_GraphProxy * graph() const
Definition: SOP_NodeVerb.h:113
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
An output stream object that owns its own string buffer storage.
bool opIgnoreShared(const SOP_NodeVerb::CookParms &cookparms) const
ParmType getNestParmType(TempIndex fieldnum) const override
bool opUsePointFilletPolys(const SOP_NodeVerb::CookParms &cookparms) const
const GLdouble * v
Definition: glew.h:1391
bool opIgnoreBridges(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4I &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
static void loadData(UT_IStream &is, UT_Matrix2D &v)
static void saveData(std::ostream &os, fpreal64 v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
bool opUseOffsetEdges(const SOP_NodeVerb::CookParms &cookparms) const
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
static void loadData(UT_IStream &is, fpreal64 &v)
const UT_StringHolder & getSlideEdges() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
bool opIgnoreFlatEdges(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getEdgeFilletGroup() const
UT_StringHolder opOffsetEdges(const SOP_NodeVerb::CookParms &cookparms) const
double fpreal64
Definition: SYS_Types.h:201
void save(std::ostream &os) const
void setProfileSampling(ProfileSampling val)
bool opIgnoreInlinePoints(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
void setOffsetEdges(const UT_StringHolder &val)
bool opUseMergedPoints(const SOP_NodeVerb::CookParms &cookparms) const
void setProfileScale(fpreal64 val)
SYS_FORCE_INLINE T & y()
Definition: UT_Vector3.h:513
exint getNestNumParms(TempIndex idx) const override
static void saveData(std::ostream &os, UT_Matrix3D v)
exint length() const
void setProfileSource(ProfileSource val)
UT_StringHolder opPointScaleAttr(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:28
UT_StringHolder opMergedPoints(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector3D &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
GLint GLenum GLsizei GLint GLsizei const void * data
Definition: glew.h:1379
UT_StringHolder opPointFilletPolys(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE T & z()
Definition: UT_Vector3.h:515
ProfileSampling getProfileSampling() const
UseOffsetScale opUseOffsetScale(const SOP_NodeVerb::CookParms &cookparms) const
const GLfloat * c
Definition: glew.h:16296
bool opUseOffsetPoints(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
void setGroupType(GroupType val)
void setPointScaleAttr(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
long long int64
Definition: SYS_Types.h:116
void setPointFilletEdges(const UT_StringHolder &val)
const UT_StringHolder & getGroup() const
UT_StringHolder opProfileDirection(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opConvexity(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void setEdgeFilletGroup(const UT_StringHolder &val)
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
void copyFrom(const SOP_NodeParms *src) override
static void loadData(UT_IStream &is, int64 &v)
const UT_StringHolder & getPointScaleAttr() const
UT_SharedPtr< UT_Ramp > opProfileRamp(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Vector3D v)
Limit opLimit(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opAsymTol(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opOffset(const SOP_NodeVerb::CookParms &cookparms) const
void setPointFilletPolys(const UT_StringHolder &val)
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
static void saveData(std::ostream &os, bool v)
static void loadData(UT_IStream &is, UT_StringHolder &v)
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:294
static void loadData(UT_IStream &is, UT_Vector4D &v)
UT_StringHolder opOffsetPoints(const SOP_NodeVerb::CookParms &cookparms) const
void setFilletShape(FilletShape val)
GT_API const UT_StringHolder version
DEP_MicroNode * depnode() const
Definition: SOP_NodeVerb.h:121
static void saveData(std::ostream &os, PRM_DataItemHandle s)
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
void setUseOffsetScale(UseOffsetScale val)
const UT_StringHolder & getMergedPoints() const
bool opStopAtPinches(const SOP_NodeVerb::CookParms &cookparms) const
ProfileSampling opProfileSampling(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector3I &v)
bool opStopAtSlideEnd(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getOffsetPoints() const
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
bool opStopAtCollisions(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
fpreal64 fpreal
Definition: SYS_Types.h:277
bool opIgnoreFlatPoints(const SOP_NodeVerb::CookParms &cookparms) const
Utility class for containing a color ramp.
Definition: UT_Ramp.h:84
void buildFromOp(const SOP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
GLdouble GLdouble GLdouble r
Definition: glew.h:1406
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
fpreal64 opProfileScale(const SOP_NodeVerb::CookParms &cookparms) const
#define SOP_API
Definition: SOP_API.h:10
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
const UT_StringHolder & getOffsetEdges() const
UT_StringHolder opEdgeFilletGroup(const SOP_NodeVerb::CookParms &cookparms) const
bool opSymmetrizeProfile(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE T & x()
Definition: UT_Vector3.h:511
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:654
GLuint64EXT * result
Definition: glew.h:14007
UT_StringHolder opSlideEdges(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opPointFilletEdges(const SOP_NodeVerb::CookParms &cookparms) const
UT_SharedPtr< UT_Ramp > getProfileRamp() const
ProfileSource opProfileSource(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
const char * findChar(int c) const
Definition: UT_String.h:1367
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:135
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
bool opReverseProfile(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Vector4D v)
Sliding opSliding(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opFlatBoost(const SOP_NodeVerb::CookParms &cookparms) const
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
static void saveData(std::ostream &os, UT_StringHolder s)
static void saveData(std::ostream &os, int64 v)
GLsizei const GLfloat * value
Definition: glew.h:1849
const UT_StringHolder & getPointFilletEdges() const
void loadFromOpSubclass(const LoadParms &loadparms) override
const OP_Context & context() const
Definition: SOP_NodeVerb.h:119
const char * getNestParmName(TempIndex fieldnum) const override
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:89
UseOffsetScale getUseOffsetScale() const
int64 opDivisions(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE bool isstring() const
static void saveData(std::ostream &os, UT_Matrix2D v)
static void saveData(std::ostream &os, UT_Vector2D v)
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
type
Definition: core.h:528