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