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