HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_Sweep-2.0.proto.h
Go to the documentation of this file.
1 /* Automagically Generated by generate_proto.py
2  * Do not Edit
3  */
4 #pragma once
5 
6 #include <SOP/SOP_API.h>
7 #include <SOP/SOP_NodeVerb.h>
8 #include <SOP/SOP_GraphProxy.h>
9 
10 #include <OP/OP_Utils.h>
11 #include <PRM/PRM_Parm.h>
12 #include <UT/UT_IStream.h>
13 #include <UT/UT_NTStreamUtil.h>
14 #include <UT/UT_Ramp.h>
15 #include <UT/UT_SharedPtr.h>
16 #include <UT/UT_StringHolder.h>
17 #include <UT/UT_StringStream.h>
18 #include <UT/UT_VectorTypes.h>
19 #include <UT/UT_EnvControl.h>
20 #include <SYS/SYS_Types.h>
21 
22 class DEP_MicroNode;
23 namespace SOP_Sweep_2_0Enums
24 {
25  enum class SurfaceShape
26  {
27  INPUT = 0,
28  TUBE,
29  SQUARE,
30  RIBBON
31  };
32  enum class SurfaceType
33  {
34  POINTS = 0,
35  ROWS,
36  COLS,
37  ROWCOL,
38  TRIS,
39  QUADS,
40  ALTTRIS,
41  REVTRIS
42  };
43  enum class EndCapType
44  {
45  NONE = 0,
46  SINGLE,
47  GRID,
49  };
50  enum class ROrd
51  {
52  XYZ = 0,
53  XZY,
54  YXZ,
55  YZX,
56  ZXY,
57  ZYX
58  };
59  enum class RollPer
60  {
61  EDGE = 0,
62  DISTANCE,
63  ATTRIB,
64  FULLEDGES,
66  };
67  enum class YawPer
68  {
69  EDGE = 0,
70  DISTANCE,
71  ATTRIB,
72  FULLEDGES,
74  };
75  enum class PitchPer
76  {
77  EDGE = 0,
78  DISTANCE,
79  ATTRIB,
80  FULLEDGES,
82  };
83  enum class CopyOrder
84  {
85  ALL = 0,
86  EACH,
87  CYCLEVTX,
88  CYCLEPR,
89  ATTRIB
90  };
91  enum class PrimType
92  {
93  AUTO = 0,
94  POLY,
95  MESH,
96  NURBS,
97  BEZIER,
98  POLYSOUP
99  };
100  enum class UpVectorType
101  {
102  NORMAL = 0,
103  X,
104  Y,
105  Z,
106  ATTRIB,
107  CUSTOM
108  };
109  enum class TangentType
110  {
111  AVGDIR = 0,
112  DIFF,
113  PREV,
114  NEXT,
115  NONE
116  };
117 }
118 
119 
121 {
122 public:
123  static int version() { return 1; }
124 
126  {
127  myCurveGroup = ""_UTsh;
128  myCrossSectionGroup = ""_UTsh;
129  mySurfaceShape = 0;
130  mySurfaceType = 5;
131  myScale = 1;
132  myCols = 8;
133  myRadius = 0.1;
134  myWidth = 0.2;
135  myReverseCrossSections = false;
136  myStretchAroundTurns = true;
137  myMaxStretchAroundTurns = 10;
138  myEndCapType = 0;
139  myCapDivs = 3;
140  myTriangularPoles = false;
141  myCapScale = 1;
142  myCapRoundness = 1;
143  myAddEndCapsGroup = false;
144  myEndCapsGroup = "endcaps"_UTsh;
145  myApplyScale = false;
146  myScaleRamp = UT_SharedPtr<UT_Ramp>(0);
147  myROrd = 0;
148  myApplyRoll = true;
149  myRoll = 0;
150  myFullTwists = 0;
151  myIncRoll = 0;
152  myRollPer = 4;
153  myRollAttrib = "roll"_UTsh;
154  myApplyYaw = false;
155  myYaw = 0;
156  myIncYaw = 0;
157  myYawPer = 4;
158  myYawAttrib = "yaw"_UTsh;
159  myApplyPitch = false;
160  myPitch = 0;
161  myIncPitch = 0;
162  myPitchPer = 4;
163  myPitchAttrib = "pitch"_UTsh;
164  myCopyOrder = 1;
165  myCrossSectionAttrib = "variant"_UTsh;
166  myPrimType = 0;
167  myUnrollClosedRowCol = false;
168  mySwapRowCol = false;
169  myCloseIfNoCurveInput = false;
170  myTangentType = 0;
171  myContinuousClosed = true;
172  myExtrapolateEndTangents = false;
173  myTransformByAttribs = true;
174  myComputeUVs = false;
175  myOverrideExistingUVs = false;
176  myLengthWeightedUVs = true;
177  myNormalizeU = true;
178  myNormalizeV = false;
179  myFlipU = true;
180  myUVScale = UT_Vector2D(1,1);
181  myUseMeshEdgeLengths = true;
182  myPropScalePerCurve = true;
183  myWrapU = true;
184  myWrapV = true;
185  myAttribsFromBackbone = "* ^P ^N ^up ^pscale ^scale ^orient ^rot ^pivot ^trans ^transform"_UTsh;
186  myAttribsFromCrossSection = "*"_UTsh;
187  myAddPointRow = false;
188  myPtRowAttrib = "ptrow"_UTsh;
189  myAddPointCol = false;
190  myPtColAttrib = "ptcol"_UTsh;
191  myAddPrimRow = false;
192  myPrimRowAttrib = "primrow"_UTsh;
193  myAddPrimCol = false;
194  myPrimColAttrib = "primcol"_UTsh;
195  myAddCrossSectionNum = false;
196  myCrossSectionNumAttrib = "crossnum"_UTsh;
197  myAddCurveNum = false;
198  myCurveNumAttrib = "curvenum"_UTsh;
199  myUpVectorType = 0;
200  myUpVectorAtStart = true;
201  myUseEndUpVector = false;
202  myUpVectorAttrib = "start_up"_UTsh;
203  myEndUpVectorAttrib = "end_up"_UTsh;
204  myUpVector = UT_Vector3D(0,1,0);
205  myEndUpVector = UT_Vector3D(0,1,0);
206 
207  }
208 
209  explicit SOP_Sweep_2_0Parms(const SOP_Sweep_2_0Parms &) = default;
210  SOP_Sweep_2_0Parms &operator=(const SOP_Sweep_2_0Parms &) = default;
211  SOP_Sweep_2_0Parms(SOP_Sweep_2_0Parms &&) noexcept = default;
212  SOP_Sweep_2_0Parms &operator=(SOP_Sweep_2_0Parms &&) noexcept = default;
213 
214  ~SOP_Sweep_2_0Parms() override {}
215 
216  bool operator==(const SOP_Sweep_2_0Parms &src) const
217  {
218  if (myCurveGroup != src.myCurveGroup) return false;
219  if (myCrossSectionGroup != src.myCrossSectionGroup) return false;
220  if (mySurfaceShape != src.mySurfaceShape) return false;
221  if (mySurfaceType != src.mySurfaceType) return false;
222  if (myScale != src.myScale) return false;
223  if (myCols != src.myCols) return false;
224  if (myRadius != src.myRadius) return false;
225  if (myWidth != src.myWidth) return false;
226  if (myReverseCrossSections != src.myReverseCrossSections) return false;
227  if (myStretchAroundTurns != src.myStretchAroundTurns) return false;
228  if (myMaxStretchAroundTurns != src.myMaxStretchAroundTurns) return false;
229  if (myEndCapType != src.myEndCapType) return false;
230  if (myCapDivs != src.myCapDivs) return false;
231  if (myTriangularPoles != src.myTriangularPoles) return false;
232  if (myCapScale != src.myCapScale) return false;
233  if (myCapRoundness != src.myCapRoundness) return false;
234  if (myAddEndCapsGroup != src.myAddEndCapsGroup) return false;
235  if (myEndCapsGroup != src.myEndCapsGroup) return false;
236  if (myApplyScale != src.myApplyScale) return false;
237  if (myScaleRamp != src.myScaleRamp)
238  { if (!myScaleRamp || !src.myScaleRamp || !(*myScaleRamp == *src.myScaleRamp)) return false; }
239  if (myROrd != src.myROrd) return false;
240  if (myApplyRoll != src.myApplyRoll) return false;
241  if (myRoll != src.myRoll) return false;
242  if (myFullTwists != src.myFullTwists) return false;
243  if (myIncRoll != src.myIncRoll) return false;
244  if (myRollPer != src.myRollPer) return false;
245  if (myRollAttrib != src.myRollAttrib) return false;
246  if (myApplyYaw != src.myApplyYaw) return false;
247  if (myYaw != src.myYaw) return false;
248  if (myIncYaw != src.myIncYaw) return false;
249  if (myYawPer != src.myYawPer) return false;
250  if (myYawAttrib != src.myYawAttrib) return false;
251  if (myApplyPitch != src.myApplyPitch) return false;
252  if (myPitch != src.myPitch) return false;
253  if (myIncPitch != src.myIncPitch) return false;
254  if (myPitchPer != src.myPitchPer) return false;
255  if (myPitchAttrib != src.myPitchAttrib) return false;
256  if (myCopyOrder != src.myCopyOrder) return false;
257  if (myCrossSectionAttrib != src.myCrossSectionAttrib) return false;
258  if (myPrimType != src.myPrimType) return false;
259  if (myUnrollClosedRowCol != src.myUnrollClosedRowCol) return false;
260  if (mySwapRowCol != src.mySwapRowCol) return false;
261  if (myCloseIfNoCurveInput != src.myCloseIfNoCurveInput) return false;
262  if (myTangentType != src.myTangentType) return false;
263  if (myContinuousClosed != src.myContinuousClosed) return false;
264  if (myExtrapolateEndTangents != src.myExtrapolateEndTangents) return false;
265  if (myTransformByAttribs != src.myTransformByAttribs) return false;
266  if (myComputeUVs != src.myComputeUVs) return false;
267  if (myOverrideExistingUVs != src.myOverrideExistingUVs) return false;
268  if (myLengthWeightedUVs != src.myLengthWeightedUVs) return false;
269  if (myNormalizeU != src.myNormalizeU) return false;
270  if (myNormalizeV != src.myNormalizeV) return false;
271  if (myFlipU != src.myFlipU) return false;
272  if (myUVScale != src.myUVScale) return false;
273  if (myUseMeshEdgeLengths != src.myUseMeshEdgeLengths) return false;
274  if (myPropScalePerCurve != src.myPropScalePerCurve) return false;
275  if (myWrapU != src.myWrapU) return false;
276  if (myWrapV != src.myWrapV) return false;
277  if (myAttribsFromBackbone != src.myAttribsFromBackbone) return false;
278  if (myAttribsFromCrossSection != src.myAttribsFromCrossSection) return false;
279  if (myAddPointRow != src.myAddPointRow) return false;
280  if (myPtRowAttrib != src.myPtRowAttrib) return false;
281  if (myAddPointCol != src.myAddPointCol) return false;
282  if (myPtColAttrib != src.myPtColAttrib) return false;
283  if (myAddPrimRow != src.myAddPrimRow) return false;
284  if (myPrimRowAttrib != src.myPrimRowAttrib) return false;
285  if (myAddPrimCol != src.myAddPrimCol) return false;
286  if (myPrimColAttrib != src.myPrimColAttrib) return false;
287  if (myAddCrossSectionNum != src.myAddCrossSectionNum) return false;
288  if (myCrossSectionNumAttrib != src.myCrossSectionNumAttrib) return false;
289  if (myAddCurveNum != src.myAddCurveNum) return false;
290  if (myCurveNumAttrib != src.myCurveNumAttrib) return false;
291  if (myUpVectorType != src.myUpVectorType) return false;
292  if (myUpVectorAtStart != src.myUpVectorAtStart) return false;
293  if (myUseEndUpVector != src.myUseEndUpVector) return false;
294  if (myUpVectorAttrib != src.myUpVectorAttrib) return false;
295  if (myEndUpVectorAttrib != src.myEndUpVectorAttrib) return false;
296  if (myUpVector != src.myUpVector) return false;
297  if (myEndUpVector != src.myEndUpVector) return false;
298 
299  return true;
300  }
301  bool operator!=(const SOP_Sweep_2_0Parms &src) const
302  {
303  return !operator==(src);
304  }
316 
317 
318 
319  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
320  {
321  myCurveGroup = ""_UTsh;
322  if (true)
323  graph->evalOpParm(myCurveGroup, nodeidx, "curvegroup", time, 0);
324  myCrossSectionGroup = ""_UTsh;
325  if (true)
326  graph->evalOpParm(myCrossSectionGroup, nodeidx, "crosssectiongroup", time, 0);
327  mySurfaceShape = 0;
328  if (true)
329  graph->evalOpParm(mySurfaceShape, nodeidx, "surfaceshape", time, 0);
330  mySurfaceType = 5;
331  if (true)
332  graph->evalOpParm(mySurfaceType, nodeidx, "surfacetype", time, 0);
333  myScale = 1;
334  if (true && ( (true&&!(((int64(getSurfaceShape())!=0))||((int64(getSurfaceShape())!=0)))) ) )
335  graph->evalOpParm(myScale, nodeidx, "scale", time, 0);
336  myCols = 8;
337  if (true && ( (true&&!(((int64(getSurfaceShape())==0))||((int64(getSurfaceShape())==0)))) ) )
338  graph->evalOpParm(myCols, nodeidx, "cols", time, 0);
339  myRadius = 0.1;
340  if (true && ( (true&&!(((int64(getSurfaceShape())!=1))||((int64(getSurfaceShape())!=1)))) ) )
341  graph->evalOpParm(myRadius, nodeidx, "radius", time, 0);
342  myWidth = 0.2;
343  if (true && ( (true&&!(((int64(getSurfaceShape())!=3)&&(int64(getSurfaceShape())!=2))||((int64(getSurfaceShape())!=3)&&(int64(getSurfaceShape())!=2)))) ) )
344  graph->evalOpParm(myWidth, nodeidx, "width", time, 0);
345  myReverseCrossSections = false;
346  if (true)
347  graph->evalOpParm(myReverseCrossSections, nodeidx, "reversecrosssections", time, 0);
348  myStretchAroundTurns = true;
349  if (true)
350  graph->evalOpParm(myStretchAroundTurns, nodeidx, "stretcharoundturns", time, 0);
351  myMaxStretchAroundTurns = 10;
352  if (true && ( (true&&!(((getStretchAroundTurns()==0)))) ) )
353  graph->evalOpParm(myMaxStretchAroundTurns, nodeidx, "maxstretcharoundturns", time, 0);
354  myEndCapType = 0;
355  if (true)
356  graph->evalOpParm(myEndCapType, nodeidx, "endcaptype", time, 0);
357  myCapDivs = 3;
358  if (true && ( (true&&!(((int64(getEndCapType())==0))||((int64(getEndCapType())==1))||((int64(getEndCapType())==3))||((int64(getEndCapType())==0))||((int64(getEndCapType())==1))||((int64(getEndCapType())==3)))) ) )
359  graph->evalOpParm(myCapDivs, nodeidx, "capdivs", time, 0);
360  myTriangularPoles = false;
361  if (true && ( (true&&!(((int64(getEndCapType())==0))||((int64(getEndCapType())==1))||((int64(getEndCapType())==3))||((int64(getEndCapType())==0))||((int64(getEndCapType())==1))||((int64(getEndCapType())==3)))) ) )
362  graph->evalOpParm(myTriangularPoles, nodeidx, "triangularpoles", time, 0);
363  myCapScale = 1;
364  if (true && ( (true&&!(((int64(getEndCapType())==0))||((int64(getEndCapType())==1))||((int64(getEndCapType())==3))||((int64(getEndCapType())==0))||((int64(getEndCapType())==1))||((int64(getEndCapType())==3)))) ) )
365  graph->evalOpParm(myCapScale, nodeidx, "capscale", time, 0);
366  myCapRoundness = 1;
367  if (true && ( (true&&!(((int64(getEndCapType())==0))||((int64(getEndCapType())==1))||((int64(getEndCapType())==3))||((int64(getEndCapType())==0))||((int64(getEndCapType())==1))||((int64(getEndCapType())==3)))) ) )
368  graph->evalOpParm(myCapRoundness, nodeidx, "caproundness", time, 0);
369  myAddEndCapsGroup = false;
370  if (true)
371  graph->evalOpParm(myAddEndCapsGroup, nodeidx, "addendcapsgroup", time, 0);
372  myEndCapsGroup = "endcaps"_UTsh;
373  if (true && ( (true&&!(((getAddEndCapsGroup()==0)))) ) )
374  graph->evalOpParm(myEndCapsGroup, nodeidx, "endcapsgroup", time, 0);
375  myApplyScale = false;
376  if (true)
377  graph->evalOpParm(myApplyScale, nodeidx, "applyscale", time, 0);
378  myScaleRamp = UT_SharedPtr<UT_Ramp>(0);
379  if (true && ( (true&&!(((getApplyScale()==0)))) ) )
380  graph->evalOpParm(myScaleRamp, nodeidx, "scaleramp", time, 0);
381  myROrd = 0;
382  if (true)
383  graph->evalOpParm(myROrd, nodeidx, "rOrd", time, 0);
384  myApplyRoll = true;
385  if (true)
386  graph->evalOpParm(myApplyRoll, nodeidx, "applyroll", time, 0);
387  myRoll = 0;
388  if (true && ( (true&&!(((getApplyRoll()==0)))) ) )
389  graph->evalOpParm(myRoll, nodeidx, "roll", time, 0);
390  myFullTwists = 0;
391  if (true && ( (true&&!(((getApplyRoll()==0)))) ) )
392  graph->evalOpParm(myFullTwists, nodeidx, "fulltwists", time, 0);
393  myIncRoll = 0;
394  if (true && ( (true&&!(((getApplyRoll()==0)))) ) )
395  graph->evalOpParm(myIncRoll, nodeidx, "incroll", time, 0);
396  myRollPer = 4;
397  if (true && ( (true&&!(((getApplyRoll()==0)))) ) )
398  graph->evalOpParm(myRollPer, nodeidx, "rollper", time, 0);
399  myRollAttrib = "roll"_UTsh;
400  if (true && ( (true&&!(((getApplyRoll()==0))||((getApplyRoll()==1)&&(int64(getRollPer())!=2))||((getApplyRoll()==0))||((getApplyRoll()==1)&&(int64(getRollPer())!=2)))) ) )
401  graph->evalOpParm(myRollAttrib, nodeidx, "rollattrib", time, 0);
402  myApplyYaw = false;
403  if (true)
404  graph->evalOpParm(myApplyYaw, nodeidx, "applyyaw", time, 0);
405  myYaw = 0;
406  if (true && ( (true&&!(((getApplyYaw()==0)))) ) )
407  graph->evalOpParm(myYaw, nodeidx, "yaw", time, 0);
408  myIncYaw = 0;
409  if (true && ( (true&&!(((getApplyYaw()==0)))) ) )
410  graph->evalOpParm(myIncYaw, nodeidx, "incyaw", time, 0);
411  myYawPer = 4;
412  if (true && ( (true&&!(((getApplyYaw()==0)))) ) )
413  graph->evalOpParm(myYawPer, nodeidx, "yawper", time, 0);
414  myYawAttrib = "yaw"_UTsh;
415  if (true && ( (true&&!(((getApplyYaw()==0))||((getApplyYaw()==1)&&(int64(getYawPer())!=2))||((getApplyYaw()==0))||((getApplyYaw()==1)&&(int64(getYawPer())!=2)))) ) )
416  graph->evalOpParm(myYawAttrib, nodeidx, "yawattrib", time, 0);
417  myApplyPitch = false;
418  if (true)
419  graph->evalOpParm(myApplyPitch, nodeidx, "applypitch", time, 0);
420  myPitch = 0;
421  if (true && ( (true&&!(((getApplyPitch()==0)))) ) )
422  graph->evalOpParm(myPitch, nodeidx, "pitch", time, 0);
423  myIncPitch = 0;
424  if (true && ( (true&&!(((getApplyPitch()==0)))) ) )
425  graph->evalOpParm(myIncPitch, nodeidx, "incpitch", time, 0);
426  myPitchPer = 4;
427  if (true && ( (true&&!(((getApplyPitch()==0)))) ) )
428  graph->evalOpParm(myPitchPer, nodeidx, "pitchper", time, 0);
429  myPitchAttrib = "pitch"_UTsh;
430  if (true && ( (true&&!(((getApplyPitch()==0))||((getApplyPitch()==1)&&(int64(getPitchPer())!=2))||((getApplyPitch()==0))||((getApplyPitch()==1)&&(int64(getPitchPer())!=2)))) ) )
431  graph->evalOpParm(myPitchAttrib, nodeidx, "pitchattrib", time, 0);
432  myCopyOrder = 1;
433  if (true && ( (true&&!(((int64(getSurfaceShape())!=0)))) ) )
434  graph->evalOpParm(myCopyOrder, nodeidx, "copyorder", time, 0);
435  myCrossSectionAttrib = "variant"_UTsh;
436  if (true && ( (true&&!(((int64(getSurfaceShape())!=0))||((int64(getCopyOrder())!=4))||((int64(getSurfaceShape())!=0))||((int64(getCopyOrder())!=4)))) ) )
437  graph->evalOpParm(myCrossSectionAttrib, nodeidx, "crosssectionattrib", time, 0);
438  myPrimType = 0;
439  if (true && ( (true&&!(((int64(getSurfaceType())==0)))) ) )
440  graph->evalOpParm(myPrimType, nodeidx, "primtype", time, 0);
441  myUnrollClosedRowCol = false;
442  if (true && ( (true&&!(((int64(getSurfaceType())==0)))) ) )
443  graph->evalOpParm(myUnrollClosedRowCol, nodeidx, "unrollclosedrowcol", time, 0);
444  mySwapRowCol = false;
445  if (true)
446  graph->evalOpParm(mySwapRowCol, nodeidx, "swaprowcol", time, 0);
447  myCloseIfNoCurveInput = false;
448  if (true && ( (true&&!(((int64(getSurfaceType())==0))||((int64(getSurfaceType())==1))||(((graph->getInput(nodeidx,0)>=0)!=0)))) ) )
449  graph->evalOpParm(myCloseIfNoCurveInput, nodeidx, "closeifnocurveinput", time, 0);
450  myTangentType = 0;
451  if (true)
452  graph->evalOpParm(myTangentType, nodeidx, "tangenttype", time, 0);
453  myContinuousClosed = true;
454  if (true && ( (true&&!(((int64(getTangentType())==4)))) ) )
455  graph->evalOpParm(myContinuousClosed, nodeidx, "continuousclosed", time, 0);
456  myExtrapolateEndTangents = false;
457  if (true && ( (true&&!(((int64(getTangentType())==4)))) ) )
458  graph->evalOpParm(myExtrapolateEndTangents, nodeidx, "extrapolateendtangents", time, 0);
459  myTransformByAttribs = true;
460  if (true)
461  graph->evalOpParm(myTransformByAttribs, nodeidx, "transformbyattribs", time, 0);
462  myComputeUVs = false;
463  if (true)
464  graph->evalOpParm(myComputeUVs, nodeidx, "computeuvs", time, 0);
465  myOverrideExistingUVs = false;
466  if (true && ( (true&&!(((getComputeUVs()==0)))) ) )
467  graph->evalOpParm(myOverrideExistingUVs, nodeidx, "overrideexistinguvs", time, 0);
468  myLengthWeightedUVs = true;
469  if (true && ( (true&&!(((getComputeUVs()==0)))) ) )
470  graph->evalOpParm(myLengthWeightedUVs, nodeidx, "lengthweighteduvs", time, 0);
471  myNormalizeU = true;
472  if (true && ( (true&&!(((getComputeUVs()==0))||((getLengthWeightedUVs()==0)))) ) )
473  graph->evalOpParm(myNormalizeU, nodeidx, "normalizeu", time, 0);
474  myNormalizeV = false;
475  if (true && ( (true&&!(((getComputeUVs()==0))||((getLengthWeightedUVs()==0)))) ) )
476  graph->evalOpParm(myNormalizeV, nodeidx, "normalizev", time, 0);
477  myFlipU = true;
478  if (true && ( (true&&!(((getComputeUVs()==0)))) ) )
479  graph->evalOpParm(myFlipU, nodeidx, "flipu", time, 0);
480  myUVScale = UT_Vector2D(1,1);
481  if (true && ( (true&&!(((getComputeUVs()==0)))) ) )
482  graph->evalOpParm(myUVScale, nodeidx, "uvscale", time, 0);
483  myUseMeshEdgeLengths = true;
484  if (true && ( (true&&!(((getComputeUVs()==0))||((getLengthWeightedUVs()==0)))) ) )
485  graph->evalOpParm(myUseMeshEdgeLengths, nodeidx, "usemeshedgelengths", time, 0);
486  myPropScalePerCurve = true;
487  if (true && ( (true&&!(((getComputeUVs()==0))||((getLengthWeightedUVs()==0))||((getNormalizeU()!=1))||((getNormalizeV()!=0)))) ) )
488  graph->evalOpParm(myPropScalePerCurve, nodeidx, "propscalepercurve", time, 0);
489  myWrapU = true;
490  if (true && ( (true&&!(((getComputeUVs()==0))||((getLengthWeightedUVs()==0))||((getNormalizeU()==1)))) ) )
491  graph->evalOpParm(myWrapU, nodeidx, "wrapu", time, 0);
492  myWrapV = true;
493  if (true && ( (true&&!(((getComputeUVs()==0))||((getLengthWeightedUVs()==0))||((getNormalizeV()==1)))) ) )
494  graph->evalOpParm(myWrapV, nodeidx, "wrapv", time, 0);
495  myAttribsFromBackbone = "* ^P ^N ^up ^pscale ^scale ^orient ^rot ^pivot ^trans ^transform"_UTsh;
496  if (true)
497  graph->evalOpParm(myAttribsFromBackbone, nodeidx, "attribsfrombackbone", time, 0);
498  myAttribsFromCrossSection = "*"_UTsh;
499  if (true)
500  graph->evalOpParm(myAttribsFromCrossSection, nodeidx, "attribsfromcrosssection", time, 0);
501  myAddPointRow = false;
502  if (true)
503  graph->evalOpParm(myAddPointRow, nodeidx, "addptrow", time, 0);
504  myPtRowAttrib = "ptrow"_UTsh;
505  if (true && ( (true&&!(((getAddPointRow()==0)))) ) )
506  graph->evalOpParm(myPtRowAttrib, nodeidx, "ptrowattrib", time, 0);
507  myAddPointCol = false;
508  if (true)
509  graph->evalOpParm(myAddPointCol, nodeidx, "addptcol", time, 0);
510  myPtColAttrib = "ptcol"_UTsh;
511  if (true && ( (true&&!(((getAddPointCol()==0)))) ) )
512  graph->evalOpParm(myPtColAttrib, nodeidx, "ptcolattrib", time, 0);
513  myAddPrimRow = false;
514  if (true)
515  graph->evalOpParm(myAddPrimRow, nodeidx, "addprimrow", time, 0);
516  myPrimRowAttrib = "primrow"_UTsh;
517  if (true && ( (true&&!(((getAddPrimRow()==0)))) ) )
518  graph->evalOpParm(myPrimRowAttrib, nodeidx, "primrowattrib", time, 0);
519  myAddPrimCol = false;
520  if (true)
521  graph->evalOpParm(myAddPrimCol, nodeidx, "addprimcol", time, 0);
522  myPrimColAttrib = "primcol"_UTsh;
523  if (true && ( (true&&!(((getAddPrimCol()==0)))) ) )
524  graph->evalOpParm(myPrimColAttrib, nodeidx, "primcolattrib", time, 0);
525  myAddCrossSectionNum = false;
526  if (true)
527  graph->evalOpParm(myAddCrossSectionNum, nodeidx, "addcrosssectionnum", time, 0);
528  myCrossSectionNumAttrib = "crossnum"_UTsh;
529  if (true && ( (true&&!(((getAddCrossSectionNum()==0)))) ) )
530  graph->evalOpParm(myCrossSectionNumAttrib, nodeidx, "crosssectionnumattrib", time, 0);
531  myAddCurveNum = false;
532  if (true)
533  graph->evalOpParm(myAddCurveNum, nodeidx, "addcurvenum", time, 0);
534  myCurveNumAttrib = "curvenum"_UTsh;
535  if (true && ( (true&&!(((getAddCurveNum()==0)))) ) )
536  graph->evalOpParm(myCurveNumAttrib, nodeidx, "curvenumattrib", time, 0);
537  myUpVectorType = 0;
538  if (true && ( (true&&!(((int64(getTangentType())==4)))) ) )
539  graph->evalOpParm(myUpVectorType, nodeidx, "upvectortype", time, 0);
540  myUpVectorAtStart = true;
541  if (true && ( (true&&!(((int64(getTangentType())==4)))) ) )
542  graph->evalOpParm(myUpVectorAtStart, nodeidx, "upvectoratstart", time, 0);
543  myUseEndUpVector = false;
544  if (true && ( (true&&!(((int64(getTangentType())==4))||((getUpVectorAtStart()==0)))) ) )
545  graph->evalOpParm(myUseEndUpVector, nodeidx, "useendupvector", time, 0);
546  myUpVectorAttrib = "start_up"_UTsh;
547  if (true && ( (true&&!(((int64(getTangentType())==4))||((int64(getUpVectorType())!=4))||((int64(getTangentType())==4))||((int64(getUpVectorType())!=4)))) ) )
548  graph->evalOpParm(myUpVectorAttrib, nodeidx, "upvectorattrib", time, 0);
549  myEndUpVectorAttrib = "end_up"_UTsh;
550  if (true && ( (true&&!(((int64(getTangentType())==4))||((int64(getUpVectorType())!=4))||((getUseEndUpVector()==0))||((getUpVectorAtStart()==0))||((int64(getTangentType())==4))||((int64(getUpVectorType())!=4))||((getUseEndUpVector()==0))||((getUpVectorAtStart()==0)))) ) )
551  graph->evalOpParm(myEndUpVectorAttrib, nodeidx, "endupvectorattrib", time, 0);
552  myUpVector = UT_Vector3D(0,1,0);
553  if (true && ( (true&&!(((int64(getTangentType())==4))||((int64(getUpVectorType())!=5))||((int64(getTangentType())==4))||((int64(getUpVectorType())!=5)))) ) )
554  graph->evalOpParm(myUpVector, nodeidx, "upvector", time, 0);
555  myEndUpVector = UT_Vector3D(0,1,0);
556  if (true && ( (true&&!(((int64(getTangentType())==4))||((int64(getUpVectorType())!=5))||((getUseEndUpVector()==0))||((getUpVectorAtStart()==0))||((int64(getTangentType())==4))||((int64(getUpVectorType())!=5))||((getUseEndUpVector()==0))||((getUpVectorAtStart()==0)))) ) )
557  graph->evalOpParm(myEndUpVector, nodeidx, "endupvector", time, 0);
558 
559  }
560 
561 
562  void loadFromOpSubclass(const LoadParms &loadparms) override
563  {
564  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
565  }
566 
567 
568  void copyFrom(const OP_NodeParms *src) override
569  {
570  *this = *((const SOP_Sweep_2_0Parms *)src);
571  }
572 
573  template <typename T>
574  void
575  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
576  {
577  if (idx.size() < 1)
578  return;
579  UT_ASSERT(idx.size() == instance.size()+1);
580  if (idx.size() != instance.size()+1)
581  return;
582  switch (idx[0])
583  {
584  case 0:
585  coerceValue(value, myCurveGroup);
586  break;
587  case 1:
588  coerceValue(value, myCrossSectionGroup);
589  break;
590  case 2:
591  coerceValue(value, mySurfaceShape);
592  break;
593  case 3:
594  coerceValue(value, mySurfaceType);
595  break;
596  case 4:
597  coerceValue(value, myScale);
598  break;
599  case 5:
600  coerceValue(value, myCols);
601  break;
602  case 6:
603  coerceValue(value, myRadius);
604  break;
605  case 7:
606  coerceValue(value, myWidth);
607  break;
608  case 8:
609  coerceValue(value, myReverseCrossSections);
610  break;
611  case 9:
612  coerceValue(value, myStretchAroundTurns);
613  break;
614  case 10:
615  coerceValue(value, myMaxStretchAroundTurns);
616  break;
617  case 11:
618  coerceValue(value, myEndCapType);
619  break;
620  case 12:
621  coerceValue(value, myCapDivs);
622  break;
623  case 13:
624  coerceValue(value, myTriangularPoles);
625  break;
626  case 14:
627  coerceValue(value, myCapScale);
628  break;
629  case 15:
630  coerceValue(value, myCapRoundness);
631  break;
632  case 16:
633  coerceValue(value, myAddEndCapsGroup);
634  break;
635  case 17:
636  coerceValue(value, myEndCapsGroup);
637  break;
638  case 18:
639  coerceValue(value, myApplyScale);
640  break;
641  case 19:
642  coerceValue(value, myScaleRamp);
643  break;
644  case 20:
645  coerceValue(value, myROrd);
646  break;
647  case 21:
648  coerceValue(value, myApplyRoll);
649  break;
650  case 22:
651  coerceValue(value, myRoll);
652  break;
653  case 23:
654  coerceValue(value, myFullTwists);
655  break;
656  case 24:
657  coerceValue(value, myIncRoll);
658  break;
659  case 25:
660  coerceValue(value, myRollPer);
661  break;
662  case 26:
663  coerceValue(value, myRollAttrib);
664  break;
665  case 27:
666  coerceValue(value, myApplyYaw);
667  break;
668  case 28:
669  coerceValue(value, myYaw);
670  break;
671  case 29:
672  coerceValue(value, myIncYaw);
673  break;
674  case 30:
675  coerceValue(value, myYawPer);
676  break;
677  case 31:
678  coerceValue(value, myYawAttrib);
679  break;
680  case 32:
681  coerceValue(value, myApplyPitch);
682  break;
683  case 33:
684  coerceValue(value, myPitch);
685  break;
686  case 34:
687  coerceValue(value, myIncPitch);
688  break;
689  case 35:
690  coerceValue(value, myPitchPer);
691  break;
692  case 36:
693  coerceValue(value, myPitchAttrib);
694  break;
695  case 37:
696  coerceValue(value, myCopyOrder);
697  break;
698  case 38:
699  coerceValue(value, myCrossSectionAttrib);
700  break;
701  case 39:
702  coerceValue(value, myPrimType);
703  break;
704  case 40:
705  coerceValue(value, myUnrollClosedRowCol);
706  break;
707  case 41:
708  coerceValue(value, mySwapRowCol);
709  break;
710  case 42:
711  coerceValue(value, myCloseIfNoCurveInput);
712  break;
713  case 43:
714  coerceValue(value, myTangentType);
715  break;
716  case 44:
717  coerceValue(value, myContinuousClosed);
718  break;
719  case 45:
720  coerceValue(value, myExtrapolateEndTangents);
721  break;
722  case 46:
723  coerceValue(value, myTransformByAttribs);
724  break;
725  case 47:
726  coerceValue(value, myComputeUVs);
727  break;
728  case 48:
729  coerceValue(value, myOverrideExistingUVs);
730  break;
731  case 49:
732  coerceValue(value, myLengthWeightedUVs);
733  break;
734  case 50:
735  coerceValue(value, myNormalizeU);
736  break;
737  case 51:
738  coerceValue(value, myNormalizeV);
739  break;
740  case 52:
741  coerceValue(value, myFlipU);
742  break;
743  case 53:
744  coerceValue(value, myUVScale);
745  break;
746  case 54:
747  coerceValue(value, myUseMeshEdgeLengths);
748  break;
749  case 55:
750  coerceValue(value, myPropScalePerCurve);
751  break;
752  case 56:
753  coerceValue(value, myWrapU);
754  break;
755  case 57:
756  coerceValue(value, myWrapV);
757  break;
758  case 58:
759  coerceValue(value, myAttribsFromBackbone);
760  break;
761  case 59:
762  coerceValue(value, myAttribsFromCrossSection);
763  break;
764  case 60:
765  coerceValue(value, myAddPointRow);
766  break;
767  case 61:
768  coerceValue(value, myPtRowAttrib);
769  break;
770  case 62:
771  coerceValue(value, myAddPointCol);
772  break;
773  case 63:
774  coerceValue(value, myPtColAttrib);
775  break;
776  case 64:
777  coerceValue(value, myAddPrimRow);
778  break;
779  case 65:
780  coerceValue(value, myPrimRowAttrib);
781  break;
782  case 66:
783  coerceValue(value, myAddPrimCol);
784  break;
785  case 67:
786  coerceValue(value, myPrimColAttrib);
787  break;
788  case 68:
789  coerceValue(value, myAddCrossSectionNum);
790  break;
791  case 69:
792  coerceValue(value, myCrossSectionNumAttrib);
793  break;
794  case 70:
795  coerceValue(value, myAddCurveNum);
796  break;
797  case 71:
798  coerceValue(value, myCurveNumAttrib);
799  break;
800  case 72:
801  coerceValue(value, myUpVectorType);
802  break;
803  case 73:
804  coerceValue(value, myUpVectorAtStart);
805  break;
806  case 74:
807  coerceValue(value, myUseEndUpVector);
808  break;
809  case 75:
810  coerceValue(value, myUpVectorAttrib);
811  break;
812  case 76:
813  coerceValue(value, myEndUpVectorAttrib);
814  break;
815  case 77:
816  coerceValue(value, myUpVector);
817  break;
818  case 78:
819  coerceValue(value, myEndUpVector);
820  break;
821 
822  }
823  }
824 
825  bool isParmColorRamp(exint idx) const override
826  {
827  switch (idx)
828  {
829 
830  }
831  return false;
832  }
833 
834  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
835  { doGetParmValue(idx, instance, value); }
836  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
837  { doGetParmValue(idx, instance, value); }
838  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
839  { doGetParmValue(idx, instance, value); }
840  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
841  { doGetParmValue(idx, instance, value); }
842  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
843  { doGetParmValue(idx, instance, value); }
844  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
845  { doGetParmValue(idx, instance, value); }
846  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
847  { doGetParmValue(idx, instance, value); }
848  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
849  { doGetParmValue(idx, instance, value); }
850  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
851  { doGetParmValue(idx, instance, value); }
852  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
853  { doGetParmValue(idx, instance, value); }
854  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
855  { doGetParmValue(idx, instance, value); }
856 
857  template <typename T>
858  void
859  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
860  {
861  if (idx.size() < 1)
862  return;
863  UT_ASSERT(idx.size() == instance.size()+1);
864  if (idx.size() != instance.size()+1)
865  return;
866  switch (idx[0])
867  {
868  case 0:
869  coerceValue(myCurveGroup, ( ( value ) ));
870  break;
871  case 1:
872  coerceValue(myCrossSectionGroup, ( ( value ) ));
873  break;
874  case 2:
875  coerceValue(mySurfaceShape, clampMinValue(0, clampMaxValue(3, value ) ));
876  break;
877  case 3:
878  coerceValue(mySurfaceType, clampMinValue(0, clampMaxValue(7, value ) ));
879  break;
880  case 4:
881  coerceValue(myScale, ( ( value ) ));
882  break;
883  case 5:
884  coerceValue(myCols, clampMinValue(1, ( value ) ));
885  break;
886  case 6:
887  coerceValue(myRadius, ( ( value ) ));
888  break;
889  case 7:
890  coerceValue(myWidth, ( ( value ) ));
891  break;
892  case 8:
893  coerceValue(myReverseCrossSections, ( ( value ) ));
894  break;
895  case 9:
896  coerceValue(myStretchAroundTurns, ( ( value ) ));
897  break;
898  case 10:
899  coerceValue(myMaxStretchAroundTurns, clampMinValue(1, ( value ) ));
900  break;
901  case 11:
902  coerceValue(myEndCapType, clampMinValue(0, clampMaxValue(3, value ) ));
903  break;
904  case 12:
905  coerceValue(myCapDivs, clampMinValue(1, ( value ) ));
906  break;
907  case 13:
908  coerceValue(myTriangularPoles, ( ( value ) ));
909  break;
910  case 14:
911  coerceValue(myCapScale, ( ( value ) ));
912  break;
913  case 15:
914  coerceValue(myCapRoundness, ( ( value ) ));
915  break;
916  case 16:
917  coerceValue(myAddEndCapsGroup, ( ( value ) ));
918  break;
919  case 17:
920  coerceValue(myEndCapsGroup, ( ( value ) ));
921  break;
922  case 18:
923  coerceValue(myApplyScale, ( ( value ) ));
924  break;
925  case 19:
926  coerceValue(myScaleRamp, clampMinValue(0, ( value ) ));
927  break;
928  case 20:
929  coerceValue(myROrd, clampMinValue(0, clampMaxValue(5, value ) ));
930  break;
931  case 21:
932  coerceValue(myApplyRoll, ( ( value ) ));
933  break;
934  case 22:
935  coerceValue(myRoll, ( ( value ) ));
936  break;
937  case 23:
938  coerceValue(myFullTwists, ( ( value ) ));
939  break;
940  case 24:
941  coerceValue(myIncRoll, ( ( value ) ));
942  break;
943  case 25:
944  coerceValue(myRollPer, clampMinValue(0, clampMaxValue(4, value ) ));
945  break;
946  case 26:
947  coerceValue(myRollAttrib, ( ( value ) ));
948  break;
949  case 27:
950  coerceValue(myApplyYaw, ( ( value ) ));
951  break;
952  case 28:
953  coerceValue(myYaw, ( ( value ) ));
954  break;
955  case 29:
956  coerceValue(myIncYaw, ( ( value ) ));
957  break;
958  case 30:
959  coerceValue(myYawPer, clampMinValue(0, clampMaxValue(4, value ) ));
960  break;
961  case 31:
962  coerceValue(myYawAttrib, ( ( value ) ));
963  break;
964  case 32:
965  coerceValue(myApplyPitch, ( ( value ) ));
966  break;
967  case 33:
968  coerceValue(myPitch, ( ( value ) ));
969  break;
970  case 34:
971  coerceValue(myIncPitch, ( ( value ) ));
972  break;
973  case 35:
974  coerceValue(myPitchPer, clampMinValue(0, clampMaxValue(4, value ) ));
975  break;
976  case 36:
977  coerceValue(myPitchAttrib, ( ( value ) ));
978  break;
979  case 37:
980  coerceValue(myCopyOrder, clampMinValue(0, clampMaxValue(4, value ) ));
981  break;
982  case 38:
983  coerceValue(myCrossSectionAttrib, ( ( value ) ));
984  break;
985  case 39:
986  coerceValue(myPrimType, clampMinValue(0, clampMaxValue(5, value ) ));
987  break;
988  case 40:
989  coerceValue(myUnrollClosedRowCol, ( ( value ) ));
990  break;
991  case 41:
992  coerceValue(mySwapRowCol, ( ( value ) ));
993  break;
994  case 42:
995  coerceValue(myCloseIfNoCurveInput, ( ( value ) ));
996  break;
997  case 43:
998  coerceValue(myTangentType, clampMinValue(0, clampMaxValue(4, value ) ));
999  break;
1000  case 44:
1001  coerceValue(myContinuousClosed, ( ( value ) ));
1002  break;
1003  case 45:
1004  coerceValue(myExtrapolateEndTangents, ( ( value ) ));
1005  break;
1006  case 46:
1007  coerceValue(myTransformByAttribs, ( ( value ) ));
1008  break;
1009  case 47:
1010  coerceValue(myComputeUVs, ( ( value ) ));
1011  break;
1012  case 48:
1013  coerceValue(myOverrideExistingUVs, ( ( value ) ));
1014  break;
1015  case 49:
1016  coerceValue(myLengthWeightedUVs, ( ( value ) ));
1017  break;
1018  case 50:
1019  coerceValue(myNormalizeU, ( ( value ) ));
1020  break;
1021  case 51:
1022  coerceValue(myNormalizeV, ( ( value ) ));
1023  break;
1024  case 52:
1025  coerceValue(myFlipU, ( ( value ) ));
1026  break;
1027  case 53:
1028  coerceValue(myUVScale, ( ( value ) ));
1029  break;
1030  case 54:
1031  coerceValue(myUseMeshEdgeLengths, ( ( value ) ));
1032  break;
1033  case 55:
1034  coerceValue(myPropScalePerCurve, ( ( value ) ));
1035  break;
1036  case 56:
1037  coerceValue(myWrapU, ( ( value ) ));
1038  break;
1039  case 57:
1040  coerceValue(myWrapV, ( ( value ) ));
1041  break;
1042  case 58:
1043  coerceValue(myAttribsFromBackbone, ( ( value ) ));
1044  break;
1045  case 59:
1046  coerceValue(myAttribsFromCrossSection, ( ( value ) ));
1047  break;
1048  case 60:
1049  coerceValue(myAddPointRow, ( ( value ) ));
1050  break;
1051  case 61:
1052  coerceValue(myPtRowAttrib, ( ( value ) ));
1053  break;
1054  case 62:
1055  coerceValue(myAddPointCol, ( ( value ) ));
1056  break;
1057  case 63:
1058  coerceValue(myPtColAttrib, ( ( value ) ));
1059  break;
1060  case 64:
1061  coerceValue(myAddPrimRow, ( ( value ) ));
1062  break;
1063  case 65:
1064  coerceValue(myPrimRowAttrib, ( ( value ) ));
1065  break;
1066  case 66:
1067  coerceValue(myAddPrimCol, ( ( value ) ));
1068  break;
1069  case 67:
1070  coerceValue(myPrimColAttrib, ( ( value ) ));
1071  break;
1072  case 68:
1073  coerceValue(myAddCrossSectionNum, ( ( value ) ));
1074  break;
1075  case 69:
1076  coerceValue(myCrossSectionNumAttrib, ( ( value ) ));
1077  break;
1078  case 70:
1079  coerceValue(myAddCurveNum, ( ( value ) ));
1080  break;
1081  case 71:
1082  coerceValue(myCurveNumAttrib, ( ( value ) ));
1083  break;
1084  case 72:
1085  coerceValue(myUpVectorType, clampMinValue(0, clampMaxValue(5, value ) ));
1086  break;
1087  case 73:
1088  coerceValue(myUpVectorAtStart, ( ( value ) ));
1089  break;
1090  case 74:
1091  coerceValue(myUseEndUpVector, ( ( value ) ));
1092  break;
1093  case 75:
1094  coerceValue(myUpVectorAttrib, ( ( value ) ));
1095  break;
1096  case 76:
1097  coerceValue(myEndUpVectorAttrib, ( ( value ) ));
1098  break;
1099  case 77:
1100  coerceValue(myUpVector, ( ( value ) ));
1101  break;
1102  case 78:
1103  coerceValue(myEndUpVector, ( ( value ) ));
1104  break;
1105 
1106  }
1107  }
1108 
1109  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
1110  { doSetParmValue(idx, instance, value); }
1111  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
1112  { doSetParmValue(idx, instance, value); }
1113  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
1114  { doSetParmValue(idx, instance, value); }
1115  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
1116  { doSetParmValue(idx, instance, value); }
1117  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
1118  { doSetParmValue(idx, instance, value); }
1119  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
1120  { doSetParmValue(idx, instance, value); }
1121  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
1122  { doSetParmValue(idx, instance, value); }
1123  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
1124  { doSetParmValue(idx, instance, value); }
1125  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
1126  { doSetParmValue(idx, instance, value); }
1127  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
1128  { doSetParmValue(idx, instance, value); }
1129  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
1130  { doSetParmValue(idx, instance, value); }
1131 
1132  exint getNestNumParms(TempIndex idx) const override
1133  {
1134  if (idx.size() == 0)
1135  return 79;
1136  switch (idx[0])
1137  {
1138 
1139  }
1140  // Invalid
1141  return 0;
1142  }
1143 
1144  const char *getNestParmName(TempIndex fieldnum) const override
1145  {
1146  if (fieldnum.size() < 1)
1147  return 0;
1148  switch (fieldnum[0])
1149  {
1150  case 0:
1151  return "curvegroup";
1152  case 1:
1153  return "crosssectiongroup";
1154  case 2:
1155  return "surfaceshape";
1156  case 3:
1157  return "surfacetype";
1158  case 4:
1159  return "scale";
1160  case 5:
1161  return "cols";
1162  case 6:
1163  return "radius";
1164  case 7:
1165  return "width";
1166  case 8:
1167  return "reversecrosssections";
1168  case 9:
1169  return "stretcharoundturns";
1170  case 10:
1171  return "maxstretcharoundturns";
1172  case 11:
1173  return "endcaptype";
1174  case 12:
1175  return "capdivs";
1176  case 13:
1177  return "triangularpoles";
1178  case 14:
1179  return "capscale";
1180  case 15:
1181  return "caproundness";
1182  case 16:
1183  return "addendcapsgroup";
1184  case 17:
1185  return "endcapsgroup";
1186  case 18:
1187  return "applyscale";
1188  case 19:
1189  return "scaleramp";
1190  case 20:
1191  return "rOrd";
1192  case 21:
1193  return "applyroll";
1194  case 22:
1195  return "roll";
1196  case 23:
1197  return "fulltwists";
1198  case 24:
1199  return "incroll";
1200  case 25:
1201  return "rollper";
1202  case 26:
1203  return "rollattrib";
1204  case 27:
1205  return "applyyaw";
1206  case 28:
1207  return "yaw";
1208  case 29:
1209  return "incyaw";
1210  case 30:
1211  return "yawper";
1212  case 31:
1213  return "yawattrib";
1214  case 32:
1215  return "applypitch";
1216  case 33:
1217  return "pitch";
1218  case 34:
1219  return "incpitch";
1220  case 35:
1221  return "pitchper";
1222  case 36:
1223  return "pitchattrib";
1224  case 37:
1225  return "copyorder";
1226  case 38:
1227  return "crosssectionattrib";
1228  case 39:
1229  return "primtype";
1230  case 40:
1231  return "unrollclosedrowcol";
1232  case 41:
1233  return "swaprowcol";
1234  case 42:
1235  return "closeifnocurveinput";
1236  case 43:
1237  return "tangenttype";
1238  case 44:
1239  return "continuousclosed";
1240  case 45:
1241  return "extrapolateendtangents";
1242  case 46:
1243  return "transformbyattribs";
1244  case 47:
1245  return "computeuvs";
1246  case 48:
1247  return "overrideexistinguvs";
1248  case 49:
1249  return "lengthweighteduvs";
1250  case 50:
1251  return "normalizeu";
1252  case 51:
1253  return "normalizev";
1254  case 52:
1255  return "flipu";
1256  case 53:
1257  return "uvscale";
1258  case 54:
1259  return "usemeshedgelengths";
1260  case 55:
1261  return "propscalepercurve";
1262  case 56:
1263  return "wrapu";
1264  case 57:
1265  return "wrapv";
1266  case 58:
1267  return "attribsfrombackbone";
1268  case 59:
1269  return "attribsfromcrosssection";
1270  case 60:
1271  return "addptrow";
1272  case 61:
1273  return "ptrowattrib";
1274  case 62:
1275  return "addptcol";
1276  case 63:
1277  return "ptcolattrib";
1278  case 64:
1279  return "addprimrow";
1280  case 65:
1281  return "primrowattrib";
1282  case 66:
1283  return "addprimcol";
1284  case 67:
1285  return "primcolattrib";
1286  case 68:
1287  return "addcrosssectionnum";
1288  case 69:
1289  return "crosssectionnumattrib";
1290  case 70:
1291  return "addcurvenum";
1292  case 71:
1293  return "curvenumattrib";
1294  case 72:
1295  return "upvectortype";
1296  case 73:
1297  return "upvectoratstart";
1298  case 74:
1299  return "useendupvector";
1300  case 75:
1301  return "upvectorattrib";
1302  case 76:
1303  return "endupvectorattrib";
1304  case 77:
1305  return "upvector";
1306  case 78:
1307  return "endupvector";
1308 
1309  }
1310  return 0;
1311  }
1312 
1313  ParmType getNestParmType(TempIndex fieldnum) const override
1314  {
1315  if (fieldnum.size() < 1)
1316  return PARM_UNSUPPORTED;
1317  switch (fieldnum[0])
1318  {
1319  case 0:
1320  return PARM_STRING;
1321  case 1:
1322  return PARM_STRING;
1323  case 2:
1324  return PARM_INTEGER;
1325  case 3:
1326  return PARM_INTEGER;
1327  case 4:
1328  return PARM_FLOAT;
1329  case 5:
1330  return PARM_INTEGER;
1331  case 6:
1332  return PARM_FLOAT;
1333  case 7:
1334  return PARM_FLOAT;
1335  case 8:
1336  return PARM_INTEGER;
1337  case 9:
1338  return PARM_INTEGER;
1339  case 10:
1340  return PARM_FLOAT;
1341  case 11:
1342  return PARM_INTEGER;
1343  case 12:
1344  return PARM_INTEGER;
1345  case 13:
1346  return PARM_INTEGER;
1347  case 14:
1348  return PARM_FLOAT;
1349  case 15:
1350  return PARM_FLOAT;
1351  case 16:
1352  return PARM_INTEGER;
1353  case 17:
1354  return PARM_STRING;
1355  case 18:
1356  return PARM_INTEGER;
1357  case 19:
1358  return PARM_RAMP;
1359  case 20:
1360  return PARM_INTEGER;
1361  case 21:
1362  return PARM_INTEGER;
1363  case 22:
1364  return PARM_FLOAT;
1365  case 23:
1366  return PARM_INTEGER;
1367  case 24:
1368  return PARM_FLOAT;
1369  case 25:
1370  return PARM_INTEGER;
1371  case 26:
1372  return PARM_STRING;
1373  case 27:
1374  return PARM_INTEGER;
1375  case 28:
1376  return PARM_FLOAT;
1377  case 29:
1378  return PARM_FLOAT;
1379  case 30:
1380  return PARM_INTEGER;
1381  case 31:
1382  return PARM_STRING;
1383  case 32:
1384  return PARM_INTEGER;
1385  case 33:
1386  return PARM_FLOAT;
1387  case 34:
1388  return PARM_FLOAT;
1389  case 35:
1390  return PARM_INTEGER;
1391  case 36:
1392  return PARM_STRING;
1393  case 37:
1394  return PARM_INTEGER;
1395  case 38:
1396  return PARM_STRING;
1397  case 39:
1398  return PARM_INTEGER;
1399  case 40:
1400  return PARM_INTEGER;
1401  case 41:
1402  return PARM_INTEGER;
1403  case 42:
1404  return PARM_INTEGER;
1405  case 43:
1406  return PARM_INTEGER;
1407  case 44:
1408  return PARM_INTEGER;
1409  case 45:
1410  return PARM_INTEGER;
1411  case 46:
1412  return PARM_INTEGER;
1413  case 47:
1414  return PARM_INTEGER;
1415  case 48:
1416  return PARM_INTEGER;
1417  case 49:
1418  return PARM_INTEGER;
1419  case 50:
1420  return PARM_INTEGER;
1421  case 51:
1422  return PARM_INTEGER;
1423  case 52:
1424  return PARM_INTEGER;
1425  case 53:
1426  return PARM_VECTOR2;
1427  case 54:
1428  return PARM_INTEGER;
1429  case 55:
1430  return PARM_INTEGER;
1431  case 56:
1432  return PARM_INTEGER;
1433  case 57:
1434  return PARM_INTEGER;
1435  case 58:
1436  return PARM_STRING;
1437  case 59:
1438  return PARM_STRING;
1439  case 60:
1440  return PARM_INTEGER;
1441  case 61:
1442  return PARM_STRING;
1443  case 62:
1444  return PARM_INTEGER;
1445  case 63:
1446  return PARM_STRING;
1447  case 64:
1448  return PARM_INTEGER;
1449  case 65:
1450  return PARM_STRING;
1451  case 66:
1452  return PARM_INTEGER;
1453  case 67:
1454  return PARM_STRING;
1455  case 68:
1456  return PARM_INTEGER;
1457  case 69:
1458  return PARM_STRING;
1459  case 70:
1460  return PARM_INTEGER;
1461  case 71:
1462  return PARM_STRING;
1463  case 72:
1464  return PARM_INTEGER;
1465  case 73:
1466  return PARM_INTEGER;
1467  case 74:
1468  return PARM_INTEGER;
1469  case 75:
1470  return PARM_STRING;
1471  case 76:
1472  return PARM_STRING;
1473  case 77:
1474  return PARM_VECTOR3;
1475  case 78:
1476  return PARM_VECTOR3;
1477 
1478  }
1479  return PARM_UNSUPPORTED;
1480  }
1481 
1482  // Boiler plate to load individual types.
1483  static void loadData(UT_IStream &is, int64 &v)
1484  { is.bread(&v, 1); }
1485  static void loadData(UT_IStream &is, bool &v)
1486  { int64 iv; is.bread(&iv, 1); v = iv; }
1487  static void loadData(UT_IStream &is, fpreal64 &v)
1488  { is.bread<fpreal64>(&v, 1); }
1489  static void loadData(UT_IStream &is, UT_Vector2D &v)
1490  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
1491  static void loadData(UT_IStream &is, UT_Vector3D &v)
1492  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1493  is.bread<fpreal64>(&v.z(), 1); }
1494  static void loadData(UT_IStream &is, UT_Vector4D &v)
1495  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1496  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
1497  static void loadData(UT_IStream &is, UT_Matrix2D &v)
1498  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
1499  static void loadData(UT_IStream &is, UT_Matrix3D &v)
1500  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
1501  static void loadData(UT_IStream &is, UT_Matrix4D &v)
1502  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
1503  static void loadData(UT_IStream &is, UT_Vector2I &v)
1504  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
1505  static void loadData(UT_IStream &is, UT_Vector3I &v)
1506  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1507  is.bread<int64>(&v.z(), 1); }
1508  static void loadData(UT_IStream &is, UT_Vector4I &v)
1509  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1510  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
1512  { is.bread(v); }
1514  { UT_StringHolder rampdata;
1515  loadData(is, rampdata);
1516  if (rampdata.isstring())
1517  {
1518  v.reset(new UT_Ramp());
1519  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
1520  v->load(istr);
1521  }
1522  else v.reset();
1523  }
1526  loadData(is, data);
1527  if (data.isstring())
1528  {
1529  // Find the data type.
1530  const char *colon = UT_StringWrap(data).findChar(':');
1531  if (colon)
1532  {
1533  int typelen = colon - data.buffer();
1535  type.strncpy(data.buffer(), typelen);
1536  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
1537 
1538  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
1539  }
1540  }
1541  else v.reset();
1542  }
1543 
1544  static void saveData(std::ostream &os, int64 v)
1545  { UTwrite(os, &v); }
1546  static void saveData(std::ostream &os, bool v)
1547  { int64 iv = v; UTwrite(os, &iv); }
1548  static void saveData(std::ostream &os, fpreal64 v)
1549  { UTwrite<fpreal64>(os, &v); }
1550  static void saveData(std::ostream &os, UT_Vector2D v)
1551  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
1552  static void saveData(std::ostream &os, UT_Vector3D v)
1553  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1554  UTwrite<fpreal64>(os, &v.z()); }
1555  static void saveData(std::ostream &os, UT_Vector4D v)
1556  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1557  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
1558  static void saveData(std::ostream &os, UT_Matrix2D v)
1559  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) UTwrite<fpreal64>(os, &v(r, c)); }
1560  static void saveData(std::ostream &os, UT_Matrix3D v)
1561  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) UTwrite<fpreal64>(os, &v(r, c)); }
1562  static void saveData(std::ostream &os, UT_Matrix4D v)
1563  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) UTwrite<fpreal64>(os, &v(r, c)); }
1564  static void saveData(std::ostream &os, UT_StringHolder s)
1565  { UT_StringWrap(s).saveBinary(os); }
1566  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
1568  UT_OStringStream ostr;
1569  if (s) s->save(ostr);
1570  result = ostr.str();
1571  saveData(os, result);
1572  }
1573  static void saveData(std::ostream &os, PRM_DataItemHandle s)
1575  UT_OStringStream ostr;
1576  if (s)
1577  {
1578  ostr << s->getDataTypeToken();
1579  ostr << ":";
1580  s->saveBinary(ostr);
1581  }
1582  result = ostr.str();
1583  saveData(os, result);
1584  }
1585 
1586 
1587  void save(std::ostream &os) const
1588  {
1589  int32 v = version();
1590  UTwrite(os, &v);
1591  saveData(os, myCurveGroup);
1592  saveData(os, myCrossSectionGroup);
1593  saveData(os, mySurfaceShape);
1594  saveData(os, mySurfaceType);
1595  saveData(os, myScale);
1596  saveData(os, myCols);
1597  saveData(os, myRadius);
1598  saveData(os, myWidth);
1599  saveData(os, myReverseCrossSections);
1600  saveData(os, myStretchAroundTurns);
1601  saveData(os, myMaxStretchAroundTurns);
1602  saveData(os, myEndCapType);
1603  saveData(os, myCapDivs);
1604  saveData(os, myTriangularPoles);
1605  saveData(os, myCapScale);
1606  saveData(os, myCapRoundness);
1607  saveData(os, myAddEndCapsGroup);
1608  saveData(os, myEndCapsGroup);
1609  saveData(os, myApplyScale);
1610  saveData(os, myScaleRamp);
1611  saveData(os, myROrd);
1612  saveData(os, myApplyRoll);
1613  saveData(os, myRoll);
1614  saveData(os, myFullTwists);
1615  saveData(os, myIncRoll);
1616  saveData(os, myRollPer);
1617  saveData(os, myRollAttrib);
1618  saveData(os, myApplyYaw);
1619  saveData(os, myYaw);
1620  saveData(os, myIncYaw);
1621  saveData(os, myYawPer);
1622  saveData(os, myYawAttrib);
1623  saveData(os, myApplyPitch);
1624  saveData(os, myPitch);
1625  saveData(os, myIncPitch);
1626  saveData(os, myPitchPer);
1627  saveData(os, myPitchAttrib);
1628  saveData(os, myCopyOrder);
1629  saveData(os, myCrossSectionAttrib);
1630  saveData(os, myPrimType);
1631  saveData(os, myUnrollClosedRowCol);
1632  saveData(os, mySwapRowCol);
1633  saveData(os, myCloseIfNoCurveInput);
1634  saveData(os, myTangentType);
1635  saveData(os, myContinuousClosed);
1636  saveData(os, myExtrapolateEndTangents);
1637  saveData(os, myTransformByAttribs);
1638  saveData(os, myComputeUVs);
1639  saveData(os, myOverrideExistingUVs);
1640  saveData(os, myLengthWeightedUVs);
1641  saveData(os, myNormalizeU);
1642  saveData(os, myNormalizeV);
1643  saveData(os, myFlipU);
1644  saveData(os, myUVScale);
1645  saveData(os, myUseMeshEdgeLengths);
1646  saveData(os, myPropScalePerCurve);
1647  saveData(os, myWrapU);
1648  saveData(os, myWrapV);
1649  saveData(os, myAttribsFromBackbone);
1650  saveData(os, myAttribsFromCrossSection);
1651  saveData(os, myAddPointRow);
1652  saveData(os, myPtRowAttrib);
1653  saveData(os, myAddPointCol);
1654  saveData(os, myPtColAttrib);
1655  saveData(os, myAddPrimRow);
1656  saveData(os, myPrimRowAttrib);
1657  saveData(os, myAddPrimCol);
1658  saveData(os, myPrimColAttrib);
1659  saveData(os, myAddCrossSectionNum);
1660  saveData(os, myCrossSectionNumAttrib);
1661  saveData(os, myAddCurveNum);
1662  saveData(os, myCurveNumAttrib);
1663  saveData(os, myUpVectorType);
1664  saveData(os, myUpVectorAtStart);
1665  saveData(os, myUseEndUpVector);
1666  saveData(os, myUpVectorAttrib);
1667  saveData(os, myEndUpVectorAttrib);
1668  saveData(os, myUpVector);
1669  saveData(os, myEndUpVector);
1670 
1671  }
1672 
1673  bool load(UT_IStream &is)
1674  {
1675  int32 v;
1676  is.bread(&v, 1);
1677  if (version() != v)
1678  {
1679  // Fail incompatible versions
1680  return false;
1681  }
1682  loadData(is, myCurveGroup);
1683  loadData(is, myCrossSectionGroup);
1684  loadData(is, mySurfaceShape);
1685  loadData(is, mySurfaceType);
1686  loadData(is, myScale);
1687  loadData(is, myCols);
1688  loadData(is, myRadius);
1689  loadData(is, myWidth);
1690  loadData(is, myReverseCrossSections);
1691  loadData(is, myStretchAroundTurns);
1692  loadData(is, myMaxStretchAroundTurns);
1693  loadData(is, myEndCapType);
1694  loadData(is, myCapDivs);
1695  loadData(is, myTriangularPoles);
1696  loadData(is, myCapScale);
1697  loadData(is, myCapRoundness);
1698  loadData(is, myAddEndCapsGroup);
1699  loadData(is, myEndCapsGroup);
1700  loadData(is, myApplyScale);
1701  loadData(is, myScaleRamp);
1702  loadData(is, myROrd);
1703  loadData(is, myApplyRoll);
1704  loadData(is, myRoll);
1705  loadData(is, myFullTwists);
1706  loadData(is, myIncRoll);
1707  loadData(is, myRollPer);
1708  loadData(is, myRollAttrib);
1709  loadData(is, myApplyYaw);
1710  loadData(is, myYaw);
1711  loadData(is, myIncYaw);
1712  loadData(is, myYawPer);
1713  loadData(is, myYawAttrib);
1714  loadData(is, myApplyPitch);
1715  loadData(is, myPitch);
1716  loadData(is, myIncPitch);
1717  loadData(is, myPitchPer);
1718  loadData(is, myPitchAttrib);
1719  loadData(is, myCopyOrder);
1720  loadData(is, myCrossSectionAttrib);
1721  loadData(is, myPrimType);
1722  loadData(is, myUnrollClosedRowCol);
1723  loadData(is, mySwapRowCol);
1724  loadData(is, myCloseIfNoCurveInput);
1725  loadData(is, myTangentType);
1726  loadData(is, myContinuousClosed);
1727  loadData(is, myExtrapolateEndTangents);
1728  loadData(is, myTransformByAttribs);
1729  loadData(is, myComputeUVs);
1730  loadData(is, myOverrideExistingUVs);
1731  loadData(is, myLengthWeightedUVs);
1732  loadData(is, myNormalizeU);
1733  loadData(is, myNormalizeV);
1734  loadData(is, myFlipU);
1735  loadData(is, myUVScale);
1736  loadData(is, myUseMeshEdgeLengths);
1737  loadData(is, myPropScalePerCurve);
1738  loadData(is, myWrapU);
1739  loadData(is, myWrapV);
1740  loadData(is, myAttribsFromBackbone);
1741  loadData(is, myAttribsFromCrossSection);
1742  loadData(is, myAddPointRow);
1743  loadData(is, myPtRowAttrib);
1744  loadData(is, myAddPointCol);
1745  loadData(is, myPtColAttrib);
1746  loadData(is, myAddPrimRow);
1747  loadData(is, myPrimRowAttrib);
1748  loadData(is, myAddPrimCol);
1749  loadData(is, myPrimColAttrib);
1750  loadData(is, myAddCrossSectionNum);
1751  loadData(is, myCrossSectionNumAttrib);
1752  loadData(is, myAddCurveNum);
1753  loadData(is, myCurveNumAttrib);
1754  loadData(is, myUpVectorType);
1755  loadData(is, myUpVectorAtStart);
1756  loadData(is, myUseEndUpVector);
1757  loadData(is, myUpVectorAttrib);
1758  loadData(is, myEndUpVectorAttrib);
1759  loadData(is, myUpVector);
1760  loadData(is, myEndUpVector);
1761 
1762  return true;
1763  }
1764 
1765  const UT_StringHolder & getCurveGroup() const { return myCurveGroup; }
1766  void setCurveGroup(const UT_StringHolder & val) { myCurveGroup = val; }
1768  {
1769  SOP_Node *thissop = cookparms.getNode();
1770  if (!thissop) return getCurveGroup();
1772  OP_Utils::evalOpParm(result, thissop, "curvegroup", cookparms.getCookTime(), 0);
1773  return result;
1774  }
1775  const UT_StringHolder & getCrossSectionGroup() const { return myCrossSectionGroup; }
1776  void setCrossSectionGroup(const UT_StringHolder & val) { myCrossSectionGroup = val; }
1778  {
1779  SOP_Node *thissop = cookparms.getNode();
1780  if (!thissop) return getCrossSectionGroup();
1782  OP_Utils::evalOpParm(result, thissop, "crosssectiongroup", cookparms.getCookTime(), 0);
1783  return result;
1784  }
1785  SurfaceShape getSurfaceShape() const { return SurfaceShape(mySurfaceShape); }
1786  void setSurfaceShape(SurfaceShape val) { mySurfaceShape = int64(val); }
1788  {
1789  SOP_Node *thissop = cookparms.getNode();
1790  if (!thissop) return getSurfaceShape();
1791  int64 result;
1792  OP_Utils::evalOpParm(result, thissop, "surfaceshape", cookparms.getCookTime(), 0);
1793  return SurfaceShape(result);
1794  }
1795  SurfaceType getSurfaceType() const { return SurfaceType(mySurfaceType); }
1796  void setSurfaceType(SurfaceType val) { mySurfaceType = int64(val); }
1798  {
1799  SOP_Node *thissop = cookparms.getNode();
1800  if (!thissop) return getSurfaceType();
1801  int64 result;
1802  OP_Utils::evalOpParm(result, thissop, "surfacetype", cookparms.getCookTime(), 0);
1803  return SurfaceType(result);
1804  }
1805  fpreal64 getScale() const { return myScale; }
1806  void setScale(fpreal64 val) { myScale = val; }
1807  fpreal64 opScale(const SOP_NodeVerb::CookParms &cookparms) const
1808  {
1809  SOP_Node *thissop = cookparms.getNode();
1810  if (!thissop) return getScale();
1811  fpreal64 result;
1812  OP_Utils::evalOpParm(result, thissop, "scale", cookparms.getCookTime(), 0);
1813  return result;
1814  }
1815  int64 getCols() const { return myCols; }
1816  void setCols(int64 val) { myCols = val; }
1817  int64 opCols(const SOP_NodeVerb::CookParms &cookparms) const
1818  {
1819  SOP_Node *thissop = cookparms.getNode();
1820  if (!thissop) return getCols();
1821  int64 result;
1822  OP_Utils::evalOpParm(result, thissop, "cols", cookparms.getCookTime(), 0);
1823  return result;
1824  }
1825  fpreal64 getRadius() const { return myRadius; }
1826  void setRadius(fpreal64 val) { myRadius = val; }
1828  {
1829  SOP_Node *thissop = cookparms.getNode();
1830  if (!thissop) return getRadius();
1831  fpreal64 result;
1832  OP_Utils::evalOpParm(result, thissop, "radius", cookparms.getCookTime(), 0);
1833  return result;
1834  }
1835  fpreal64 getWidth() const { return myWidth; }
1836  void setWidth(fpreal64 val) { myWidth = val; }
1837  fpreal64 opWidth(const SOP_NodeVerb::CookParms &cookparms) const
1838  {
1839  SOP_Node *thissop = cookparms.getNode();
1840  if (!thissop) return getWidth();
1841  fpreal64 result;
1842  OP_Utils::evalOpParm(result, thissop, "width", cookparms.getCookTime(), 0);
1843  return result;
1844  }
1845  bool getReverseCrossSections() const { return myReverseCrossSections; }
1846  void setReverseCrossSections(bool val) { myReverseCrossSections = val; }
1848  {
1849  SOP_Node *thissop = cookparms.getNode();
1850  if (!thissop) return getReverseCrossSections();
1851  bool result;
1852  OP_Utils::evalOpParm(result, thissop, "reversecrosssections", cookparms.getCookTime(), 0);
1853  return result;
1854  }
1855  bool getStretchAroundTurns() const { return myStretchAroundTurns; }
1856  void setStretchAroundTurns(bool val) { myStretchAroundTurns = val; }
1857  bool opStretchAroundTurns(const SOP_NodeVerb::CookParms &cookparms) const
1858  {
1859  SOP_Node *thissop = cookparms.getNode();
1860  if (!thissop) return getStretchAroundTurns();
1861  bool result;
1862  OP_Utils::evalOpParm(result, thissop, "stretcharoundturns", cookparms.getCookTime(), 0);
1863  return result;
1864  }
1865  fpreal64 getMaxStretchAroundTurns() const { return myMaxStretchAroundTurns; }
1866  void setMaxStretchAroundTurns(fpreal64 val) { myMaxStretchAroundTurns = val; }
1868  {
1869  SOP_Node *thissop = cookparms.getNode();
1870  if (!thissop) return getMaxStretchAroundTurns();
1871  fpreal64 result;
1872  OP_Utils::evalOpParm(result, thissop, "maxstretcharoundturns", cookparms.getCookTime(), 0);
1873  return result;
1874  }
1875  EndCapType getEndCapType() const { return EndCapType(myEndCapType); }
1876  void setEndCapType(EndCapType val) { myEndCapType = int64(val); }
1878  {
1879  SOP_Node *thissop = cookparms.getNode();
1880  if (!thissop) return getEndCapType();
1881  int64 result;
1882  OP_Utils::evalOpParm(result, thissop, "endcaptype", cookparms.getCookTime(), 0);
1883  return EndCapType(result);
1884  }
1885  int64 getCapDivs() const { return myCapDivs; }
1886  void setCapDivs(int64 val) { myCapDivs = val; }
1887  int64 opCapDivs(const SOP_NodeVerb::CookParms &cookparms) const
1888  {
1889  SOP_Node *thissop = cookparms.getNode();
1890  if (!thissop) return getCapDivs();
1891  int64 result;
1892  OP_Utils::evalOpParm(result, thissop, "capdivs", cookparms.getCookTime(), 0);
1893  return result;
1894  }
1895  bool getTriangularPoles() const { return myTriangularPoles; }
1896  void setTriangularPoles(bool val) { myTriangularPoles = val; }
1897  bool opTriangularPoles(const SOP_NodeVerb::CookParms &cookparms) const
1898  {
1899  SOP_Node *thissop = cookparms.getNode();
1900  if (!thissop) return getTriangularPoles();
1901  bool result;
1902  OP_Utils::evalOpParm(result, thissop, "triangularpoles", cookparms.getCookTime(), 0);
1903  return result;
1904  }
1905  fpreal64 getCapScale() const { return myCapScale; }
1906  void setCapScale(fpreal64 val) { myCapScale = val; }
1908  {
1909  SOP_Node *thissop = cookparms.getNode();
1910  if (!thissop) return getCapScale();
1911  fpreal64 result;
1912  OP_Utils::evalOpParm(result, thissop, "capscale", cookparms.getCookTime(), 0);
1913  return result;
1914  }
1915  fpreal64 getCapRoundness() const { return myCapRoundness; }
1916  void setCapRoundness(fpreal64 val) { myCapRoundness = val; }
1918  {
1919  SOP_Node *thissop = cookparms.getNode();
1920  if (!thissop) return getCapRoundness();
1921  fpreal64 result;
1922  OP_Utils::evalOpParm(result, thissop, "caproundness", cookparms.getCookTime(), 0);
1923  return result;
1924  }
1925  bool getAddEndCapsGroup() const { return myAddEndCapsGroup; }
1926  void setAddEndCapsGroup(bool val) { myAddEndCapsGroup = val; }
1927  bool opAddEndCapsGroup(const SOP_NodeVerb::CookParms &cookparms) const
1928  {
1929  SOP_Node *thissop = cookparms.getNode();
1930  if (!thissop) return getAddEndCapsGroup();
1931  bool result;
1932  OP_Utils::evalOpParm(result, thissop, "addendcapsgroup", cookparms.getCookTime(), 0);
1933  return result;
1934  }
1935  const UT_StringHolder & getEndCapsGroup() const { return myEndCapsGroup; }
1936  void setEndCapsGroup(const UT_StringHolder & val) { myEndCapsGroup = val; }
1938  {
1939  SOP_Node *thissop = cookparms.getNode();
1940  if (!thissop) return getEndCapsGroup();
1942  OP_Utils::evalOpParm(result, thissop, "endcapsgroup", cookparms.getCookTime(), 0);
1943  return result;
1944  }
1945  bool getApplyScale() const { return myApplyScale; }
1946  void setApplyScale(bool val) { myApplyScale = val; }
1947  bool opApplyScale(const SOP_NodeVerb::CookParms &cookparms) const
1948  {
1949  SOP_Node *thissop = cookparms.getNode();
1950  if (!thissop) return getApplyScale();
1951  bool result;
1952  OP_Utils::evalOpParm(result, thissop, "applyscale", cookparms.getCookTime(), 0);
1953  return result;
1954  }
1955  UT_SharedPtr<UT_Ramp> getScaleRamp() const { return myScaleRamp; }
1956  void setScaleRamp(UT_SharedPtr<UT_Ramp> val) { myScaleRamp = val; }
1958  {
1959  SOP_Node *thissop = cookparms.getNode();
1960  if (!thissop) return getScaleRamp();
1962  OP_Utils::evalOpParm(result, thissop, "scaleramp", cookparms.getCookTime(), 0);
1963  return result;
1964  }
1965  ROrd getROrd() const { return ROrd(myROrd); }
1966  void setROrd(ROrd val) { myROrd = int64(val); }
1967  ROrd opROrd(const SOP_NodeVerb::CookParms &cookparms) const
1968  {
1969  SOP_Node *thissop = cookparms.getNode();
1970  if (!thissop) return getROrd();
1971  int64 result;
1972  OP_Utils::evalOpParm(result, thissop, "rOrd", cookparms.getCookTime(), 0);
1973  return ROrd(result);
1974  }
1975  bool getApplyRoll() const { return myApplyRoll; }
1976  void setApplyRoll(bool val) { myApplyRoll = val; }
1977  bool opApplyRoll(const SOP_NodeVerb::CookParms &cookparms) const
1978  {
1979  SOP_Node *thissop = cookparms.getNode();
1980  if (!thissop) return getApplyRoll();
1981  bool result;
1982  OP_Utils::evalOpParm(result, thissop, "applyroll", cookparms.getCookTime(), 0);
1983  return result;
1984  }
1985  fpreal64 getRoll() const { return myRoll; }
1986  void setRoll(fpreal64 val) { myRoll = val; }
1987  fpreal64 opRoll(const SOP_NodeVerb::CookParms &cookparms) const
1988  {
1989  SOP_Node *thissop = cookparms.getNode();
1990  if (!thissop) return getRoll();
1991  fpreal64 result;
1992  OP_Utils::evalOpParm(result, thissop, "roll", cookparms.getCookTime(), 0);
1993  return result;
1994  }
1995  int64 getFullTwists() const { return myFullTwists; }
1996  void setFullTwists(int64 val) { myFullTwists = val; }
1998  {
1999  SOP_Node *thissop = cookparms.getNode();
2000  if (!thissop) return getFullTwists();
2001  int64 result;
2002  OP_Utils::evalOpParm(result, thissop, "fulltwists", cookparms.getCookTime(), 0);
2003  return result;
2004  }
2005  fpreal64 getIncRoll() const { return myIncRoll; }
2006  void setIncRoll(fpreal64 val) { myIncRoll = val; }
2008  {
2009  SOP_Node *thissop = cookparms.getNode();
2010  if (!thissop) return getIncRoll();
2011  fpreal64 result;
2012  OP_Utils::evalOpParm(result, thissop, "incroll", cookparms.getCookTime(), 0);
2013  return result;
2014  }
2015  RollPer getRollPer() const { return RollPer(myRollPer); }
2016  void setRollPer(RollPer val) { myRollPer = int64(val); }
2018  {
2019  SOP_Node *thissop = cookparms.getNode();
2020  if (!thissop) return getRollPer();
2021  int64 result;
2022  OP_Utils::evalOpParm(result, thissop, "rollper", cookparms.getCookTime(), 0);
2023  return RollPer(result);
2024  }
2025  const UT_StringHolder & getRollAttrib() const { return myRollAttrib; }
2026  void setRollAttrib(const UT_StringHolder & val) { myRollAttrib = val; }
2028  {
2029  SOP_Node *thissop = cookparms.getNode();
2030  if (!thissop) return getRollAttrib();
2032  OP_Utils::evalOpParm(result, thissop, "rollattrib", cookparms.getCookTime(), 0);
2033  return result;
2034  }
2035  bool getApplyYaw() const { return myApplyYaw; }
2036  void setApplyYaw(bool val) { myApplyYaw = val; }
2037  bool opApplyYaw(const SOP_NodeVerb::CookParms &cookparms) const
2038  {
2039  SOP_Node *thissop = cookparms.getNode();
2040  if (!thissop) return getApplyYaw();
2041  bool result;
2042  OP_Utils::evalOpParm(result, thissop, "applyyaw", cookparms.getCookTime(), 0);
2043  return result;
2044  }
2045  fpreal64 getYaw() const { return myYaw; }
2046  void setYaw(fpreal64 val) { myYaw = val; }
2047  fpreal64 opYaw(const SOP_NodeVerb::CookParms &cookparms) const
2048  {
2049  SOP_Node *thissop = cookparms.getNode();
2050  if (!thissop) return getYaw();
2051  fpreal64 result;
2052  OP_Utils::evalOpParm(result, thissop, "yaw", cookparms.getCookTime(), 0);
2053  return result;
2054  }
2055  fpreal64 getIncYaw() const { return myIncYaw; }
2056  void setIncYaw(fpreal64 val) { myIncYaw = val; }
2058  {
2059  SOP_Node *thissop = cookparms.getNode();
2060  if (!thissop) return getIncYaw();
2061  fpreal64 result;
2062  OP_Utils::evalOpParm(result, thissop, "incyaw", cookparms.getCookTime(), 0);
2063  return result;
2064  }
2065  YawPer getYawPer() const { return YawPer(myYawPer); }
2066  void setYawPer(YawPer val) { myYawPer = int64(val); }
2067  YawPer opYawPer(const SOP_NodeVerb::CookParms &cookparms) const
2068  {
2069  SOP_Node *thissop = cookparms.getNode();
2070  if (!thissop) return getYawPer();
2071  int64 result;
2072  OP_Utils::evalOpParm(result, thissop, "yawper", cookparms.getCookTime(), 0);
2073  return YawPer(result);
2074  }
2075  const UT_StringHolder & getYawAttrib() const { return myYawAttrib; }
2076  void setYawAttrib(const UT_StringHolder & val) { myYawAttrib = val; }
2078  {
2079  SOP_Node *thissop = cookparms.getNode();
2080  if (!thissop) return getYawAttrib();
2082  OP_Utils::evalOpParm(result, thissop, "yawattrib", cookparms.getCookTime(), 0);
2083  return result;
2084  }
2085  bool getApplyPitch() const { return myApplyPitch; }
2086  void setApplyPitch(bool val) { myApplyPitch = val; }
2087  bool opApplyPitch(const SOP_NodeVerb::CookParms &cookparms) const
2088  {
2089  SOP_Node *thissop = cookparms.getNode();
2090  if (!thissop) return getApplyPitch();
2091  bool result;
2092  OP_Utils::evalOpParm(result, thissop, "applypitch", cookparms.getCookTime(), 0);
2093  return result;
2094  }
2095  fpreal64 getPitch() const { return myPitch; }
2096  void setPitch(fpreal64 val) { myPitch = val; }
2097  fpreal64 opPitch(const SOP_NodeVerb::CookParms &cookparms) const
2098  {
2099  SOP_Node *thissop = cookparms.getNode();
2100  if (!thissop) return getPitch();
2101  fpreal64 result;
2102  OP_Utils::evalOpParm(result, thissop, "pitch", cookparms.getCookTime(), 0);
2103  return result;
2104  }
2105  fpreal64 getIncPitch() const { return myIncPitch; }
2106  void setIncPitch(fpreal64 val) { myIncPitch = val; }
2108  {
2109  SOP_Node *thissop = cookparms.getNode();
2110  if (!thissop) return getIncPitch();
2111  fpreal64 result;
2112  OP_Utils::evalOpParm(result, thissop, "incpitch", cookparms.getCookTime(), 0);
2113  return result;
2114  }
2115  PitchPer getPitchPer() const { return PitchPer(myPitchPer); }
2116  void setPitchPer(PitchPer val) { myPitchPer = int64(val); }
2118  {
2119  SOP_Node *thissop = cookparms.getNode();
2120  if (!thissop) return getPitchPer();
2121  int64 result;
2122  OP_Utils::evalOpParm(result, thissop, "pitchper", cookparms.getCookTime(), 0);
2123  return PitchPer(result);
2124  }
2125  const UT_StringHolder & getPitchAttrib() const { return myPitchAttrib; }
2126  void setPitchAttrib(const UT_StringHolder & val) { myPitchAttrib = val; }
2128  {
2129  SOP_Node *thissop = cookparms.getNode();
2130  if (!thissop) return getPitchAttrib();
2132  OP_Utils::evalOpParm(result, thissop, "pitchattrib", cookparms.getCookTime(), 0);
2133  return result;
2134  }
2135  CopyOrder getCopyOrder() const { return CopyOrder(myCopyOrder); }
2136  void setCopyOrder(CopyOrder val) { myCopyOrder = int64(val); }
2138  {
2139  SOP_Node *thissop = cookparms.getNode();
2140  if (!thissop) return getCopyOrder();
2141  int64 result;
2142  OP_Utils::evalOpParm(result, thissop, "copyorder", cookparms.getCookTime(), 0);
2143  return CopyOrder(result);
2144  }
2145  const UT_StringHolder & getCrossSectionAttrib() const { return myCrossSectionAttrib; }
2146  void setCrossSectionAttrib(const UT_StringHolder & val) { myCrossSectionAttrib = val; }
2148  {
2149  SOP_Node *thissop = cookparms.getNode();
2150  if (!thissop) return getCrossSectionAttrib();
2152  OP_Utils::evalOpParm(result, thissop, "crosssectionattrib", cookparms.getCookTime(), 0);
2153  return result;
2154  }
2155  PrimType getPrimType() const { return PrimType(myPrimType); }
2156  void setPrimType(PrimType val) { myPrimType = int64(val); }
2158  {
2159  SOP_Node *thissop = cookparms.getNode();
2160  if (!thissop) return getPrimType();
2161  int64 result;
2162  OP_Utils::evalOpParm(result, thissop, "primtype", cookparms.getCookTime(), 0);
2163  return PrimType(result);
2164  }
2165  bool getUnrollClosedRowCol() const { return myUnrollClosedRowCol; }
2166  void setUnrollClosedRowCol(bool val) { myUnrollClosedRowCol = val; }
2167  bool opUnrollClosedRowCol(const SOP_NodeVerb::CookParms &cookparms) const
2168  {
2169  SOP_Node *thissop = cookparms.getNode();
2170  if (!thissop) return getUnrollClosedRowCol();
2171  bool result;
2172  OP_Utils::evalOpParm(result, thissop, "unrollclosedrowcol", cookparms.getCookTime(), 0);
2173  return result;
2174  }
2175  bool getSwapRowCol() const { return mySwapRowCol; }
2176  void setSwapRowCol(bool val) { mySwapRowCol = val; }
2177  bool opSwapRowCol(const SOP_NodeVerb::CookParms &cookparms) const
2178  {
2179  SOP_Node *thissop = cookparms.getNode();
2180  if (!thissop) return getSwapRowCol();
2181  bool result;
2182  OP_Utils::evalOpParm(result, thissop, "swaprowcol", cookparms.getCookTime(), 0);
2183  return result;
2184  }
2185  bool getCloseIfNoCurveInput() const { return myCloseIfNoCurveInput; }
2186  void setCloseIfNoCurveInput(bool val) { myCloseIfNoCurveInput = val; }
2187  bool opCloseIfNoCurveInput(const SOP_NodeVerb::CookParms &cookparms) const
2188  {
2189  SOP_Node *thissop = cookparms.getNode();
2190  if (!thissop) return getCloseIfNoCurveInput();
2191  bool result;
2192  OP_Utils::evalOpParm(result, thissop, "closeifnocurveinput", cookparms.getCookTime(), 0);
2193  return result;
2194  }
2195  TangentType getTangentType() const { return TangentType(myTangentType); }
2196  void setTangentType(TangentType val) { myTangentType = int64(val); }
2198  {
2199  SOP_Node *thissop = cookparms.getNode();
2200  if (!thissop) return getTangentType();
2201  int64 result;
2202  OP_Utils::evalOpParm(result, thissop, "tangenttype", cookparms.getCookTime(), 0);
2203  return TangentType(result);
2204  }
2205  bool getContinuousClosed() const { return myContinuousClosed; }
2206  void setContinuousClosed(bool val) { myContinuousClosed = val; }
2207  bool opContinuousClosed(const SOP_NodeVerb::CookParms &cookparms) const
2208  {
2209  SOP_Node *thissop = cookparms.getNode();
2210  if (!thissop) return getContinuousClosed();
2211  bool result;
2212  OP_Utils::evalOpParm(result, thissop, "continuousclosed", cookparms.getCookTime(), 0);
2213  return result;
2214  }
2215  bool getExtrapolateEndTangents() const { return myExtrapolateEndTangents; }
2216  void setExtrapolateEndTangents(bool val) { myExtrapolateEndTangents = val; }
2218  {
2219  SOP_Node *thissop = cookparms.getNode();
2220  if (!thissop) return getExtrapolateEndTangents();
2221  bool result;
2222  OP_Utils::evalOpParm(result, thissop, "extrapolateendtangents", cookparms.getCookTime(), 0);
2223  return result;
2224  }
2225  bool getTransformByAttribs() const { return myTransformByAttribs; }
2226  void setTransformByAttribs(bool val) { myTransformByAttribs = val; }
2227  bool opTransformByAttribs(const SOP_NodeVerb::CookParms &cookparms) const
2228  {
2229  SOP_Node *thissop = cookparms.getNode();
2230  if (!thissop) return getTransformByAttribs();
2231  bool result;
2232  OP_Utils::evalOpParm(result, thissop, "transformbyattribs", cookparms.getCookTime(), 0);
2233  return result;
2234  }
2235  bool getComputeUVs() const { return myComputeUVs; }
2236  void setComputeUVs(bool val) { myComputeUVs = val; }
2237  bool opComputeUVs(const SOP_NodeVerb::CookParms &cookparms) const
2238  {
2239  SOP_Node *thissop = cookparms.getNode();
2240  if (!thissop) return getComputeUVs();
2241  bool result;
2242  OP_Utils::evalOpParm(result, thissop, "computeuvs", cookparms.getCookTime(), 0);
2243  return result;
2244  }
2245  bool getOverrideExistingUVs() const { return myOverrideExistingUVs; }
2246  void setOverrideExistingUVs(bool val) { myOverrideExistingUVs = val; }
2247  bool opOverrideExistingUVs(const SOP_NodeVerb::CookParms &cookparms) const
2248  {
2249  SOP_Node *thissop = cookparms.getNode();
2250  if (!thissop) return getOverrideExistingUVs();
2251  bool result;
2252  OP_Utils::evalOpParm(result, thissop, "overrideexistinguvs", cookparms.getCookTime(), 0);
2253  return result;
2254  }
2255  bool getLengthWeightedUVs() const { return myLengthWeightedUVs; }
2256  void setLengthWeightedUVs(bool val) { myLengthWeightedUVs = val; }
2257  bool opLengthWeightedUVs(const SOP_NodeVerb::CookParms &cookparms) const
2258  {
2259  SOP_Node *thissop = cookparms.getNode();
2260  if (!thissop) return getLengthWeightedUVs();
2261  bool result;
2262  OP_Utils::evalOpParm(result, thissop, "lengthweighteduvs", cookparms.getCookTime(), 0);
2263  return result;
2264  }
2265  bool getNormalizeU() const { return myNormalizeU; }
2266  void setNormalizeU(bool val) { myNormalizeU = val; }
2267  bool opNormalizeU(const SOP_NodeVerb::CookParms &cookparms) const
2268  {
2269  SOP_Node *thissop = cookparms.getNode();
2270  if (!thissop) return getNormalizeU();
2271  bool result;
2272  OP_Utils::evalOpParm(result, thissop, "normalizeu", cookparms.getCookTime(), 0);
2273  return result;
2274  }
2275  bool getNormalizeV() const { return myNormalizeV; }
2276  void setNormalizeV(bool val) { myNormalizeV = val; }
2277  bool opNormalizeV(const SOP_NodeVerb::CookParms &cookparms) const
2278  {
2279  SOP_Node *thissop = cookparms.getNode();
2280  if (!thissop) return getNormalizeV();
2281  bool result;
2282  OP_Utils::evalOpParm(result, thissop, "normalizev", cookparms.getCookTime(), 0);
2283  return result;
2284  }
2285  bool getFlipU() const { return myFlipU; }
2286  void setFlipU(bool val) { myFlipU = val; }
2287  bool opFlipU(const SOP_NodeVerb::CookParms &cookparms) const
2288  {
2289  SOP_Node *thissop = cookparms.getNode();
2290  if (!thissop) return getFlipU();
2291  bool result;
2292  OP_Utils::evalOpParm(result, thissop, "flipu", cookparms.getCookTime(), 0);
2293  return result;
2294  }
2295  UT_Vector2D getUVScale() const { return myUVScale; }
2296  void setUVScale(UT_Vector2D val) { myUVScale = val; }
2298  {
2299  SOP_Node *thissop = cookparms.getNode();
2300  if (!thissop) return getUVScale();
2302  OP_Utils::evalOpParm(result, thissop, "uvscale", cookparms.getCookTime(), 0);
2303  return result;
2304  }
2305  bool getUseMeshEdgeLengths() const { return myUseMeshEdgeLengths; }
2306  void setUseMeshEdgeLengths(bool val) { myUseMeshEdgeLengths = val; }
2307  bool opUseMeshEdgeLengths(const SOP_NodeVerb::CookParms &cookparms) const
2308  {
2309  SOP_Node *thissop = cookparms.getNode();
2310  if (!thissop) return getUseMeshEdgeLengths();
2311  bool result;
2312  OP_Utils::evalOpParm(result, thissop, "usemeshedgelengths", cookparms.getCookTime(), 0);
2313  return result;
2314  }
2315  bool getPropScalePerCurve() const { return myPropScalePerCurve; }
2316  void setPropScalePerCurve(bool val) { myPropScalePerCurve = val; }
2317  bool opPropScalePerCurve(const SOP_NodeVerb::CookParms &cookparms) const
2318  {
2319  SOP_Node *thissop = cookparms.getNode();
2320  if (!thissop) return getPropScalePerCurve();
2321  bool result;
2322  OP_Utils::evalOpParm(result, thissop, "propscalepercurve", cookparms.getCookTime(), 0);
2323  return result;
2324  }
2325  bool getWrapU() const { return myWrapU; }
2326  void setWrapU(bool val) { myWrapU = val; }
2327  bool opWrapU(const SOP_NodeVerb::CookParms &cookparms) const
2328  {
2329  SOP_Node *thissop = cookparms.getNode();
2330  if (!thissop) return getWrapU();
2331  bool result;
2332  OP_Utils::evalOpParm(result, thissop, "wrapu", cookparms.getCookTime(), 0);
2333  return result;
2334  }
2335  bool getWrapV() const { return myWrapV; }
2336  void setWrapV(bool val) { myWrapV = val; }
2337  bool opWrapV(const SOP_NodeVerb::CookParms &cookparms) const
2338  {
2339  SOP_Node *thissop = cookparms.getNode();
2340  if (!thissop) return getWrapV();
2341  bool result;
2342  OP_Utils::evalOpParm(result, thissop, "wrapv", cookparms.getCookTime(), 0);
2343  return result;
2344  }
2345  const UT_StringHolder & getAttribsFromBackbone() const { return myAttribsFromBackbone; }
2346  void setAttribsFromBackbone(const UT_StringHolder & val) { myAttribsFromBackbone = val; }
2348  {
2349  SOP_Node *thissop = cookparms.getNode();
2350  if (!thissop) return getAttribsFromBackbone();
2352  OP_Utils::evalOpParm(result, thissop, "attribsfrombackbone", cookparms.getCookTime(), 0);
2353  return result;
2354  }
2355  const UT_StringHolder & getAttribsFromCrossSection() const { return myAttribsFromCrossSection; }
2356  void setAttribsFromCrossSection(const UT_StringHolder & val) { myAttribsFromCrossSection = val; }
2358  {
2359  SOP_Node *thissop = cookparms.getNode();
2360  if (!thissop) return getAttribsFromCrossSection();
2362  OP_Utils::evalOpParm(result, thissop, "attribsfromcrosssection", cookparms.getCookTime(), 0);
2363  return result;
2364  }
2365  bool getAddPointRow() const { return myAddPointRow; }
2366  void setAddPointRow(bool val) { myAddPointRow = val; }
2367  bool opAddPointRow(const SOP_NodeVerb::CookParms &cookparms) const
2368  {
2369  SOP_Node *thissop = cookparms.getNode();
2370  if (!thissop) return getAddPointRow();
2371  bool result;
2372  OP_Utils::evalOpParm(result, thissop, "addptrow", cookparms.getCookTime(), 0);
2373  return result;
2374  }
2375  const UT_StringHolder & getPtRowAttrib() const { return myPtRowAttrib; }
2376  void setPtRowAttrib(const UT_StringHolder & val) { myPtRowAttrib = val; }
2378  {
2379  SOP_Node *thissop = cookparms.getNode();
2380  if (!thissop) return getPtRowAttrib();
2382  OP_Utils::evalOpParm(result, thissop, "ptrowattrib", cookparms.getCookTime(), 0);
2383  return result;
2384  }
2385  bool getAddPointCol() const { return myAddPointCol; }
2386  void setAddPointCol(bool val) { myAddPointCol = val; }
2387  bool opAddPointCol(const SOP_NodeVerb::CookParms &cookparms) const
2388  {
2389  SOP_Node *thissop = cookparms.getNode();
2390  if (!thissop) return getAddPointCol();
2391  bool result;
2392  OP_Utils::evalOpParm(result, thissop, "addptcol", cookparms.getCookTime(), 0);
2393  return result;
2394  }
2395  const UT_StringHolder & getPtColAttrib() const { return myPtColAttrib; }
2396  void setPtColAttrib(const UT_StringHolder & val) { myPtColAttrib = val; }
2398  {
2399  SOP_Node *thissop = cookparms.getNode();
2400  if (!thissop) return getPtColAttrib();
2402  OP_Utils::evalOpParm(result, thissop, "ptcolattrib", cookparms.getCookTime(), 0);
2403  return result;
2404  }
2405  bool getAddPrimRow() const { return myAddPrimRow; }
2406  void setAddPrimRow(bool val) { myAddPrimRow = val; }
2407  bool opAddPrimRow(const SOP_NodeVerb::CookParms &cookparms) const
2408  {
2409  SOP_Node *thissop = cookparms.getNode();
2410  if (!thissop) return getAddPrimRow();
2411  bool result;
2412  OP_Utils::evalOpParm(result, thissop, "addprimrow", cookparms.getCookTime(), 0);
2413  return result;
2414  }
2415  const UT_StringHolder & getPrimRowAttrib() const { return myPrimRowAttrib; }
2416  void setPrimRowAttrib(const UT_StringHolder & val) { myPrimRowAttrib = val; }
2418  {
2419  SOP_Node *thissop = cookparms.getNode();
2420  if (!thissop) return getPrimRowAttrib();
2422  OP_Utils::evalOpParm(result, thissop, "primrowattrib", cookparms.getCookTime(), 0);
2423  return result;
2424  }
2425  bool getAddPrimCol() const { return myAddPrimCol; }
2426  void setAddPrimCol(bool val) { myAddPrimCol = val; }
2427  bool opAddPrimCol(const SOP_NodeVerb::CookParms &cookparms) const
2428  {
2429  SOP_Node *thissop = cookparms.getNode();
2430  if (!thissop) return getAddPrimCol();
2431  bool result;
2432  OP_Utils::evalOpParm(result, thissop, "addprimcol", cookparms.getCookTime(), 0);
2433  return result;
2434  }
2435  const UT_StringHolder & getPrimColAttrib() const { return myPrimColAttrib; }
2436  void setPrimColAttrib(const UT_StringHolder & val) { myPrimColAttrib = val; }
2438  {
2439  SOP_Node *thissop = cookparms.getNode();
2440  if (!thissop) return getPrimColAttrib();
2442  OP_Utils::evalOpParm(result, thissop, "primcolattrib", cookparms.getCookTime(), 0);
2443  return result;
2444  }
2445  bool getAddCrossSectionNum() const { return myAddCrossSectionNum; }
2446  void setAddCrossSectionNum(bool val) { myAddCrossSectionNum = val; }
2447  bool opAddCrossSectionNum(const SOP_NodeVerb::CookParms &cookparms) const
2448  {
2449  SOP_Node *thissop = cookparms.getNode();
2450  if (!thissop) return getAddCrossSectionNum();
2451  bool result;
2452  OP_Utils::evalOpParm(result, thissop, "addcrosssectionnum", cookparms.getCookTime(), 0);
2453  return result;
2454  }
2455  const UT_StringHolder & getCrossSectionNumAttrib() const { return myCrossSectionNumAttrib; }
2456  void setCrossSectionNumAttrib(const UT_StringHolder & val) { myCrossSectionNumAttrib = val; }
2458  {
2459  SOP_Node *thissop = cookparms.getNode();
2460  if (!thissop) return getCrossSectionNumAttrib();
2462  OP_Utils::evalOpParm(result, thissop, "crosssectionnumattrib", cookparms.getCookTime(), 0);
2463  return result;
2464  }
2465  bool getAddCurveNum() const { return myAddCurveNum; }
2466  void setAddCurveNum(bool val) { myAddCurveNum = val; }
2467  bool opAddCurveNum(const SOP_NodeVerb::CookParms &cookparms) const
2468  {
2469  SOP_Node *thissop = cookparms.getNode();
2470  if (!thissop) return getAddCurveNum();
2471  bool result;
2472  OP_Utils::evalOpParm(result, thissop, "addcurvenum", cookparms.getCookTime(), 0);
2473  return result;
2474  }
2475  const UT_StringHolder & getCurveNumAttrib() const { return myCurveNumAttrib; }
2476  void setCurveNumAttrib(const UT_StringHolder & val) { myCurveNumAttrib = val; }
2478  {
2479  SOP_Node *thissop = cookparms.getNode();
2480  if (!thissop) return getCurveNumAttrib();
2482  OP_Utils::evalOpParm(result, thissop, "curvenumattrib", cookparms.getCookTime(), 0);
2483  return result;
2484  }
2485  UpVectorType getUpVectorType() const { return UpVectorType(myUpVectorType); }
2486  void setUpVectorType(UpVectorType val) { myUpVectorType = int64(val); }
2488  {
2489  SOP_Node *thissop = cookparms.getNode();
2490  if (!thissop) return getUpVectorType();
2491  int64 result;
2492  OP_Utils::evalOpParm(result, thissop, "upvectortype", cookparms.getCookTime(), 0);
2493  return UpVectorType(result);
2494  }
2495  bool getUpVectorAtStart() const { return myUpVectorAtStart; }
2496  void setUpVectorAtStart(bool val) { myUpVectorAtStart = val; }
2497  bool opUpVectorAtStart(const SOP_NodeVerb::CookParms &cookparms) const
2498  {
2499  SOP_Node *thissop = cookparms.getNode();
2500  if (!thissop) return getUpVectorAtStart();
2501  bool result;
2502  OP_Utils::evalOpParm(result, thissop, "upvectoratstart", cookparms.getCookTime(), 0);
2503  return result;
2504  }
2505  bool getUseEndUpVector() const { return myUseEndUpVector; }
2506  void setUseEndUpVector(bool val) { myUseEndUpVector = val; }
2507  bool opUseEndUpVector(const SOP_NodeVerb::CookParms &cookparms) const
2508  {
2509  SOP_Node *thissop = cookparms.getNode();
2510  if (!thissop) return getUseEndUpVector();
2511  bool result;
2512  OP_Utils::evalOpParm(result, thissop, "useendupvector", cookparms.getCookTime(), 0);
2513  return result;
2514  }
2515  const UT_StringHolder & getUpVectorAttrib() const { return myUpVectorAttrib; }
2516  void setUpVectorAttrib(const UT_StringHolder & val) { myUpVectorAttrib = val; }
2518  {
2519  SOP_Node *thissop = cookparms.getNode();
2520  if (!thissop) return getUpVectorAttrib();
2522  OP_Utils::evalOpParm(result, thissop, "upvectorattrib", cookparms.getCookTime(), 0);
2523  return result;
2524  }
2525  const UT_StringHolder & getEndUpVectorAttrib() const { return myEndUpVectorAttrib; }
2526  void setEndUpVectorAttrib(const UT_StringHolder & val) { myEndUpVectorAttrib = val; }
2528  {
2529  SOP_Node *thissop = cookparms.getNode();
2530  if (!thissop) return getEndUpVectorAttrib();
2532  OP_Utils::evalOpParm(result, thissop, "endupvectorattrib", cookparms.getCookTime(), 0);
2533  return result;
2534  }
2535  UT_Vector3D getUpVector() const { return myUpVector; }
2536  void setUpVector(UT_Vector3D val) { myUpVector = val; }
2538  {
2539  SOP_Node *thissop = cookparms.getNode();
2540  if (!thissop) return getUpVector();
2542  OP_Utils::evalOpParm(result, thissop, "upvector", cookparms.getCookTime(), 0);
2543  return result;
2544  }
2545  UT_Vector3D getEndUpVector() const { return myEndUpVector; }
2546  void setEndUpVector(UT_Vector3D val) { myEndUpVector = val; }
2548  {
2549  SOP_Node *thissop = cookparms.getNode();
2550  if (!thissop) return getEndUpVector();
2552  OP_Utils::evalOpParm(result, thissop, "endupvector", cookparms.getCookTime(), 0);
2553  return result;
2554  }
2555 
2556 private:
2557  UT_StringHolder myCurveGroup;
2558  UT_StringHolder myCrossSectionGroup;
2559  int64 mySurfaceShape;
2560  int64 mySurfaceType;
2561  fpreal64 myScale;
2562  int64 myCols;
2563  fpreal64 myRadius;
2564  fpreal64 myWidth;
2565  bool myReverseCrossSections;
2566  bool myStretchAroundTurns;
2567  fpreal64 myMaxStretchAroundTurns;
2568  int64 myEndCapType;
2569  int64 myCapDivs;
2570  bool myTriangularPoles;
2571  fpreal64 myCapScale;
2572  fpreal64 myCapRoundness;
2573  bool myAddEndCapsGroup;
2574  UT_StringHolder myEndCapsGroup;
2575  bool myApplyScale;
2576  UT_SharedPtr<UT_Ramp> myScaleRamp;
2577  int64 myROrd;
2578  bool myApplyRoll;
2579  fpreal64 myRoll;
2580  int64 myFullTwists;
2581  fpreal64 myIncRoll;
2582  int64 myRollPer;
2583  UT_StringHolder myRollAttrib;
2584  bool myApplyYaw;
2585  fpreal64 myYaw;
2586  fpreal64 myIncYaw;
2587  int64 myYawPer;
2588  UT_StringHolder myYawAttrib;
2589  bool myApplyPitch;
2590  fpreal64 myPitch;
2591  fpreal64 myIncPitch;
2592  int64 myPitchPer;
2593  UT_StringHolder myPitchAttrib;
2594  int64 myCopyOrder;
2595  UT_StringHolder myCrossSectionAttrib;
2596  int64 myPrimType;
2597  bool myUnrollClosedRowCol;
2598  bool mySwapRowCol;
2599  bool myCloseIfNoCurveInput;
2600  int64 myTangentType;
2601  bool myContinuousClosed;
2602  bool myExtrapolateEndTangents;
2603  bool myTransformByAttribs;
2604  bool myComputeUVs;
2605  bool myOverrideExistingUVs;
2606  bool myLengthWeightedUVs;
2607  bool myNormalizeU;
2608  bool myNormalizeV;
2609  bool myFlipU;
2610  UT_Vector2D myUVScale;
2611  bool myUseMeshEdgeLengths;
2612  bool myPropScalePerCurve;
2613  bool myWrapU;
2614  bool myWrapV;
2615  UT_StringHolder myAttribsFromBackbone;
2616  UT_StringHolder myAttribsFromCrossSection;
2617  bool myAddPointRow;
2618  UT_StringHolder myPtRowAttrib;
2619  bool myAddPointCol;
2620  UT_StringHolder myPtColAttrib;
2621  bool myAddPrimRow;
2622  UT_StringHolder myPrimRowAttrib;
2623  bool myAddPrimCol;
2624  UT_StringHolder myPrimColAttrib;
2625  bool myAddCrossSectionNum;
2626  UT_StringHolder myCrossSectionNumAttrib;
2627  bool myAddCurveNum;
2628  UT_StringHolder myCurveNumAttrib;
2629  int64 myUpVectorType;
2630  bool myUpVectorAtStart;
2631  bool myUseEndUpVector;
2632  UT_StringHolder myUpVectorAttrib;
2633  UT_StringHolder myEndUpVectorAttrib;
2634  UT_Vector3D myUpVector;
2635  UT_Vector3D myEndUpVector;
2636 
2637 };
const UT_StringHolder & getPitchAttrib() const
void setPropScalePerCurve(bool val)
fpreal64 getPitch() const
bool getPropScalePerCurve() const
void setComputeUVs(bool val)
bool getTransformByAttribs() const
bool getStretchAroundTurns() const
fpreal64 getRadius() const
fpreal64 getScale() const
const UT_StringHolder & getEndUpVectorAttrib() const
void setWidth(fpreal64 val)
UpVectorType getUpVectorType() const
static void loadData(UT_IStream &is, UT_Vector4I &v)
bool opAddPointCol(const SOP_NodeVerb::CookParms &cookparms) const
YawPer opYawPer(const SOP_NodeVerb::CookParms &cookparms) const
bool opPropScalePerCurve(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getIncPitch() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
bool getOverrideExistingUVs() const
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
bool opNormalizeU(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getPtColAttrib() const
void setPitch(fpreal64 val)
void setAddPrimCol(bool val)
static void saveData(std::ostream &os, UT_Vector4D v)
void setRadius(fpreal64 val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
bool opUnrollClosedRowCol(const SOP_NodeVerb::CookParms &cookparms) const
void setCrossSectionNumAttrib(const UT_StringHolder &val)
void setPtRowAttrib(const UT_StringHolder &val)
T clampMaxValue(fpreal maxvalue, const T &src) const
Definition: OP_NodeParms.h:315
bool getUseEndUpVector() const
const UT_StringHolder & getCurveNumAttrib() const
void setTransformByAttribs(bool val)
fpreal64 opWidth(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getEndCapsGroup() const
fpreal64 opRoll(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Matrix4D v)
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
exint bread(int32 *buffer, exint asize=1)
GLboolean * data
Definition: glcorearb.h:131
PrimType opPrimType(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opCurveGroup(const SOP_NodeVerb::CookParms &cookparms) const
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:493
fpreal64 opIncPitch(const SOP_NodeVerb::CookParms &cookparms) const
void setUpVectorAtStart(bool val)
const GLdouble * v
Definition: glcorearb.h:837
bool getUnrollClosedRowCol() const
void setPrimColAttrib(const UT_StringHolder &val)
fpreal getTime() const
Definition: OP_Context.h:62
UT_Vector2T< fpreal64 > UT_Vector2D
fpreal64 getWidth() const
UT_StringHolder opPrimColAttrib(const SOP_NodeVerb::CookParms &cookparms) const
UpVectorType opUpVectorType(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opRadius(const SOP_NodeVerb::CookParms &cookparms) const
exint getNestNumParms(TempIndex idx) const override
bool opApplyYaw(const SOP_NodeVerb::CookParms &cookparms) const
bool opAddPrimRow(const SOP_NodeVerb::CookParms &cookparms) const
bool opWrapV(const SOP_NodeVerb::CookParms &cookparms) const
void setRoll(fpreal64 val)
bool opComputeUVs(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opAttribsFromBackbone(const SOP_NodeVerb::CookParms &cookparms) const
bool opUseEndUpVector(const SOP_NodeVerb::CookParms &cookparms) const
void setYaw(fpreal64 val)
const OP_Context & context() const
Definition: OP_NodeParms.h:97
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
void setEndCapsGroup(const UT_StringHolder &val)
SYS_FORCE_INLINE const char * buffer() const
void setEndUpVectorAttrib(const UT_StringHolder &val)
void setTriangularPoles(bool val)
GLdouble s
Definition: glad.h:3009
void setPrimRowAttrib(const UT_StringHolder &val)
void setCloseIfNoCurveInput(bool val)
void setAddCurveNum(bool val)
UT_Vector3D getEndUpVector() const
An output stream object that owns its own string buffer storage.
static void saveData(std::ostream &os, fpreal64 v)
static void saveData(std::ostream &os, PRM_DataItemHandle s)
bool getUpVectorAtStart() const
UT_StringHolder opUpVectorAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix3D &v)
const UT_StringHolder & getCurveGroup() const
void setUpVectorType(UpVectorType val)
bool getAddPointCol() const
**But if you need a result
Definition: thread.h:613
void setOverrideExistingUVs(bool val)
void setAddPointRow(bool val)
static void loadData(UT_IStream &is, int64 &v)
T clampMinValue(fpreal minvalue, const T &src) const
Definition: OP_NodeParms.h:308
static void saveData(std::ostream &os, bool v)
static void loadData(UT_IStream &is, UT_Vector2D &v)
void setSurfaceShape(SurfaceShape val)
ROrd opROrd(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opIncYaw(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
bool opCloseIfNoCurveInput(const SOP_NodeVerb::CookParms &cookparms) const
exint nodeIdx() const
Definition: OP_NodeParms.h:95
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
bool getContinuousClosed() const
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
const UT_StringHolder & getCrossSectionGroup() const
const UT_StringHolder & getRollAttrib() const
void setCapDivs(int64 val)
static void loadData(UT_IStream &is, fpreal64 &v)
const UT_StringHolder & getYawAttrib() const
void setPtColAttrib(const UT_StringHolder &val)
UT_StringHolder opCrossSectionAttrib(const SOP_NodeVerb::CookParms &cookparms) const
virtual NodeIdx getInput(NodeIdx idx, int input, bool markused=false) const =0
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
fpreal64 opIncRoll(const SOP_NodeVerb::CookParms &cookparms) const
bool opLengthWeightedUVs(const SOP_NodeVerb::CookParms &cookparms) const
ParmType getNestParmType(TempIndex fieldnum) const override
void setMaxStretchAroundTurns(fpreal64 val)
bool getTriangularPoles() const
bool getAddCurveNum() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
void setUpVectorAttrib(const UT_StringHolder &val)
bool opSwapRowCol(const SOP_NodeVerb::CookParms &cookparms) const
double fpreal64
Definition: SYS_Types.h:201
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
PrimType getPrimType() const
void setCrossSectionGroup(const UT_StringHolder &val)
void setAttribsFromCrossSection(const UT_StringHolder &val)
bool getUseMeshEdgeLengths() const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
void setApplyYaw(bool val)
void setAddCrossSectionNum(bool val)
PitchPer opPitchPer(const SOP_NodeVerb::CookParms &cookparms) const
void loadFromOpSubclass(const LoadParms &loadparms) override
void setAddPointCol(bool val)
bool opAddCurveNum(const SOP_NodeVerb::CookParms &cookparms) const
bool getExtrapolateEndTangents() const
static void loadData(UT_IStream &is, UT_Vector3I &v)
UT_SharedPtr< UT_Ramp > opScaleRamp(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getCapRoundness() const
SurfaceType getSurfaceType() const
void save(std::ostream &os) const
static void loadData(UT_IStream &is, UT_Matrix2D &v)
bool opNormalizeV(const SOP_NodeVerb::CookParms &cookparms) const
void setRollAttrib(const UT_StringHolder &val)
SurfaceShape getSurfaceShape() const
exint length() const
fpreal64 getMaxStretchAroundTurns() const
UT_StringHolder opCurveNumAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
void setFullTwists(int64 val)
const char * getNestParmName(TempIndex fieldnum) const override
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
const UT_StringHolder & getPtRowAttrib() const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
void setStretchAroundTurns(bool val)
void setCapRoundness(fpreal64 val)
static void loadData(UT_IStream &is, UT_StringHolder &v)
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
void setUpVector(UT_Vector3D val)
void setAddPrimRow(bool val)
void copyFrom(const OP_NodeParms *src) override
fpreal64 opCapScale(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
int64 opCols(const SOP_NodeVerb::CookParms &cookparms) const
bool opAddPrimCol(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opScale(const SOP_NodeVerb::CookParms &cookparms) const
void setReverseCrossSections(bool val)
void setApplyRoll(bool val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
bool getAddEndCapsGroup() const
bool load(UT_IStream &is)
void setPitchAttrib(const UT_StringHolder &val)
void setNormalizeV(bool val)
UT_StringHolder opEndCapsGroup(const SOP_NodeVerb::CookParms &cookparms) const
EndCapType getEndCapType() const
void setScaleRamp(UT_SharedPtr< UT_Ramp > val)
fpreal64 getYaw() const
void setScale(fpreal64 val)
long long int64
Definition: SYS_Types.h:116
void setCapScale(fpreal64 val)
void setAddEndCapsGroup(bool val)
void setPrimType(PrimType val)
void setIncPitch(fpreal64 val)
UT_Vector3T< fpreal64 > UT_Vector3D
UT_StringHolder opPitchAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
void setEndCapType(EndCapType val)
void setCrossSectionAttrib(const UT_StringHolder &val)
fpreal64 getIncYaw() const
static void loadData(UT_IStream &is, bool &v)
fpreal64 getCapScale() const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
void setUseMeshEdgeLengths(bool val)
void setYawAttrib(const UT_StringHolder &val)
void setYawPer(YawPer val)
TangentType opTangentType(const SOP_NodeVerb::CookParms &cookparms) const
bool getReverseCrossSections() const
bool opAddPointRow(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector3D &v)
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
bool isParmColorRamp(exint idx) const override
bool getAddPointRow() const
bool getCloseIfNoCurveInput() const
const UT_StringHolder & getPrimColAttrib() const
GT_API const UT_StringHolder version
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
void setLengthWeightedUVs(bool val)
bool opOverrideExistingUVs(const SOP_NodeVerb::CookParms &cookparms) const
void setIncYaw(fpreal64 val)
static void saveData(std::ostream &os, UT_Vector2D v)
const UT_StringHolder & getAttribsFromBackbone() const
void setUnrollClosedRowCol(bool val)
bool opUpVectorAtStart(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Matrix3D v)
void setRollPer(RollPer val)
bool opWrapU(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getRoll() const
void setPitchPer(PitchPer val)
UT_StringHolder opEndUpVectorAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setUVScale(UT_Vector2D val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
bool opApplyPitch(const SOP_NodeVerb::CookParms &cookparms) const
void coerceValue(T &result, const S &src) const
Definition: OP_NodeParms.h:301
bool operator==(const SOP_Sweep_2_0Parms &src) const
void setCurveGroup(const UT_StringHolder &val)
bool opAddEndCapsGroup(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opPrimRowAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
fpreal64 fpreal
Definition: SYS_Types.h:277
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
fpreal64 opPitch(const SOP_NodeVerb::CookParms &cookparms) const
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
UT_Vector3D opEndUpVector(const SOP_NodeVerb::CookParms &cookparms) const
void setTangentType(TangentType val)
bool getLengthWeightedUVs() const
void setApplyPitch(bool val)
YawPer getYawPer() const
UT_StringHolder opCrossSectionNumAttrib(const SOP_NodeVerb::CookParms &cookparms) const
Utility class for containing a color ramp.
Definition: UT_Ramp.h:88
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
void setAttribsFromBackbone(const UT_StringHolder &val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
static void loadData(UT_IStream &is, UT_Vector2I &v)
void setCopyOrder(CopyOrder val)
const UT_StringHolder & getCrossSectionAttrib() const
bool opApplyRoll(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getAttribsFromCrossSection() const
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
static void loadData(UT_IStream &is, UT_Vector4D &v)
int64 opCapDivs(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
GLuint GLfloat * val
Definition: glcorearb.h:1608
void setExtrapolateEndTangents(bool val)
Vec3< typename MatType::value_type > getScale(const MatType &mat)
Return a Vec3 representing the lengths of the passed matrix's upper 3×3's rows.
Definition: Mat.h:633
bool opReverseCrossSections(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opCapRoundness(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opYawAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
#define SOP_API
Definition: SOP_API.h:10
UT_StringHolder opPtColAttrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opPtRowAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
fpreal64 opYaw(const SOP_NodeVerb::CookParms &cookparms) const
bool opUseMeshEdgeLengths(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opMaxStretchAroundTurns(const SOP_NodeVerb::CookParms &cookparms) const
bool opTriangularPoles(const SOP_NodeVerb::CookParms &cookparms) const
bool opStretchAroundTurns(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Vector3D v)
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
void setCurveNumAttrib(const UT_StringHolder &val)
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
void setApplyScale(bool val)
UT_StringHolder opCrossSectionGroup(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
bool opFlipU(const SOP_NodeVerb::CookParms &cookparms) const
const char * findChar(int c) const
Definition: UT_String.h:1385
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
Definition: core.h:1131
static void loadData(UT_IStream &is, UT_Matrix4D &v)
UT_SharedPtr< UT_Ramp > getScaleRamp() const
const UT_StringHolder & getCrossSectionNumAttrib() const
void setSurfaceType(SurfaceType val)
void setNormalizeU(bool val)
GLboolean r
Definition: glcorearb.h:1222
int64 getFullTwists() const
PitchPer getPitchPer() const
RollPer getRollPer() const
fpreal64 getIncRoll() const
EndCapType opEndCapType(const SOP_NodeVerb::CookParms &cookparms) const
void setEndUpVector(UT_Vector3D val)
void setSwapRowCol(bool val)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
void setUseEndUpVector(bool val)
bool opApplyScale(const SOP_NodeVerb::CookParms &cookparms) const
CopyOrder opCopyOrder(const SOP_NodeVerb::CookParms &cookparms) const
type
Definition: core.h:1059
UT_Vector2D getUVScale() const
void setIncRoll(fpreal64 val)
const UT_StringHolder & getPrimRowAttrib() const
UT_Vector3D getUpVector() const
CopyOrder getCopyOrder() const
static void saveData(std::ostream &os, UT_Matrix2D v)
bool opAddCrossSectionNum(const SOP_NodeVerb::CookParms &cookparms) const
int64 opFullTwists(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D opUpVector(const SOP_NodeVerb::CookParms &cookparms) const
GEO_API int getPrimType(const TypeMask &mask)
UT_StringHolder opAttribsFromCrossSection(const SOP_NodeVerb::CookParms &cookparms) const
bool getAddCrossSectionNum() const
UT_StringHolder opRollAttrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:89
SurfaceType opSurfaceType(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getUpVectorAttrib() const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
SYS_FORCE_INLINE bool isstring() const
bool opExtrapolateEndTangents(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D opUVScale(const SOP_NodeVerb::CookParms &cookparms) const
OP_NodeParms & operator=(const OP_NodeParms &)=default
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
TangentType getTangentType() const
SurfaceShape opSurfaceShape(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_StringHolder s)
bool opTransformByAttribs(const SOP_NodeVerb::CookParms &cookparms) const
bool operator!=(const SOP_Sweep_2_0Parms &src) const
GLenum src
Definition: glcorearb.h:1793
static void saveData(std::ostream &os, int64 v)
RollPer opRollPer(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
void setContinuousClosed(bool val)
bool opContinuousClosed(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override