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