HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_GuideGroomCore.proto.h
Go to the documentation of this file.
1 /* Automagically Generated by generate_proto.py
2  * Do not Edit
3  */
4 #pragma once
5 
6 #include <SOP/SOP_API.h>
7 #include <SOP/SOP_NodeVerb.h>
8 #include <SOP/SOP_GraphProxy.h>
9 
10 #include <OP/OP_Utils.h>
11 #include <PRM/PRM_Parm.h>
12 #include <UT/UT_IStream.h>
13 #include <UT/UT_NTStreamUtil.h>
14 #include <UT/UT_Ramp.h>
15 #include <UT/UT_SharedPtr.h>
16 #include <UT/UT_StringHolder.h>
17 #include <UT/UT_StringStream.h>
18 #include <UT/UT_VectorTypes.h>
19 #include <UT/UT_EnvControl.h>
20 #include <SYS/SYS_Types.h>
21 
22 using namespace UT::Literal;
23 
24 class DEP_MicroNode;
25 namespace SOP_GuideGroomCoreEnums
26 {
27  enum class Grouptype
28  {
29  GUESS = 0,
30  BREAKPOINTS,
31  EDGES,
32  POINTS,
33  PRIMS
34  };
35  enum class Tool
36  {
37  DRAW = 0,
38  PLANT,
39  DELETE,
40  CULL,
41  CUT,
42  BRUSH,
43  SCULPT,
44  SCULPTPHYS,
45  STRAIGHTEN,
46  LIFT,
48  SMOOTH,
49  MOVE,
50  RELAX,
51  CLUMP,
52  BLUR,
54  PAINTMASK,
55  PAINTGROUP,
56  EDIT,
57  RESAMPLE,
58  TWIST,
59  MIRROR
60  };
61  enum class Liftmode
62  {
63  ADDSUB = 0,
64  SET
65  };
66  enum class Adjustlengthmode
67  {
68  ADDSUB = 0,
69  SET
70  };
71  enum class Adjustlengthmethod
72  {
73  CUTEXTEND = 0,
74  SCALE
75  };
76  enum class Plantmode
77  {
78  SINGLE = 0,
79  SCATTER
80  };
81  enum class Drawcurvetype
82  {
83  GUIDE = 0,
84  PARTLINE
85  };
86  enum class Drawsegmode
87  {
88  FIXED = 0,
89  ADAPTIVE
90  };
91  enum class Editsoftmode
92  {
93  ENDPOINTS = 0,
94  CURVEFRAC,
95  ABSDIST
96  };
97  enum class Resamplesegmode
98  {
99  FIXED = 0,
100  ADAPTIVE,
101  ADD,
102  REMOVE
103  };
104  enum class Xord
105  {
106  SRT = 0,
107  STR,
108  RST,
109  RTS,
110  TSR,
111  TRS
112  };
113  enum class Rord
114  {
115  XYZ = 0,
116  XZY,
117  YXZ,
118  YZX,
119  ZXY,
120  ZYX
121  };
122  enum class Button
123  {
124  NONE = 0,
125  LEFT,
126  MIDDLE
127  };
128 }
129 
130 
132 {
133 public:
134  static int version() { return 1; }
135 
137  {
138  myRecordstrokes = false;
139  myStashnode = ".."_sh;
140  myGroup = ""_sh;
141  myGrouptype = 0;
142  myUsemask = true;
143  myMirror = false;
144  myMirrorgroup = ""_sh;
145  myMirrororigin = UT_Vector3D(0,0,0);
146  myMirrordir = UT_Vector3D(1,0,0);
147  myTool = 5;
148  myRaybias = 0.0001;
149  myStrandmode = false;
150  myCollidewithskin = true;
151  myBrushsurface = false;
152  myUsepartinglines = true;
153  myScreenradius = 0;
154  myObjectradius = 0;
155  mySoft = 0;
156  mySpacing = 0;
157  myDensity = 1000;
158  myBrushmaintainlength = 0;
159  myBrushsnaptosurface = false;
160  myBrushbend = 0;
161  myBrushbendfalloff = 0;
162  myLiftmode = 0;
163  myLiftangle = 45;
164  myAdjustlengthmode = 0;
165  myAdjustlengthvalue = 0.1;
166  myAdjustlengthlength = 0.1;
167  myAdjustlengthmethod = 1;
168  myMoverotatewithskin = false;
169  mySculptdoconstrain = true;
170  mySculptlockroot = true;
171  mySmoothtargetsmoothness = 0.5;
172  myBlurinskinspace = false;
173  myBlurperpoint = false;
174  myClumpperpoint = false;
175  myPlantmode = 1;
176  myPlantinterpolateguides = true;
177  myPlantinterpolaterelskin = true;
178  myPlantlength = 0.01;
179  myPlantsegcount = 8;
180  myDrawonskin = false;
181  myDrawcurvetype = 0;
182  myDrawsegmode = 0;
183  myDrawsegcount = 8;
184  myDrawseglength = 0.05;
185  myEditactiveprim = 0;
186  myEditsoft = true;
187  myEditsoftmode = 1;
188  myEditcurvefrac = 1;
189  myEditcurvedist = 1;
190  myResamplesegmode = 0;
191  myResamplesegcount = 8;
192  myResampleseglength = 0.05;
193  myTwistangle = 45;
194  myCurvemaskramp = UT_SharedPtr<UT_Ramp>(0);
195  myGroom = PRM_DataItemHandle(0);
196  myStrands = PRM_DataItemHandle(0);
197  myStrokes = PRM_DataItemHandle(0);
198  myPreviewutil = true;
199  myPaintmaskpoints = false;
200  myGroupnewprims = false;
201  myNamenewprims = true;
202  myActivegroup = ""_sh;
203  myNameattrib = ""_sh;
204  myActivename = ""_sh;
205  myColorbyname = false;
206  myColorseed = 0;
207  myXord = 0;
208  myRord = 0;
209  myT = UT_Vector3D(0,0,0);
210  myR = UT_Vector3D(0,0,0);
211  myS = UT_Vector3D(1,1,1);
212  myShear = UT_Vector3D(0,0,0);
213  myScale = 1;
214  myP = UT_Vector3D(0,0,0);
215  myPr = UT_Vector3D(0,0,0);
216  myCamxform0 = 0;
217  myCamxform1 = 0;
218  myCamxform2 = 0;
219  myCamxform3 = 0;
220  myCampos = 0;
221  myCursorpos = 0;
222  myCursordisplace = 0;
223  myRaypos = 0;
224  myRaydir = 0;
225  myStrengthscale = 0;
226  myButton = 0;
227  myShiftkey = false;
228  myCtrlkey = false;
229 
230  }
231 
232  explicit SOP_GuideGroomCoreParms(const SOP_GuideGroomCoreParms &) = default;
233 
235 
237  {
238  if (myRecordstrokes != src.myRecordstrokes) return false;
239  if (myStashnode != src.myStashnode) return false;
240  if (myGroup != src.myGroup) return false;
241  if (myGrouptype != src.myGrouptype) return false;
242  if (myUsemask != src.myUsemask) return false;
243  if (myMirror != src.myMirror) return false;
244  if (myMirrorgroup != src.myMirrorgroup) return false;
245  if (myMirrororigin != src.myMirrororigin) return false;
246  if (myMirrordir != src.myMirrordir) return false;
247  if (myTool != src.myTool) return false;
248  if (myRaybias != src.myRaybias) return false;
249  if (myStrandmode != src.myStrandmode) return false;
250  if (myCollidewithskin != src.myCollidewithskin) return false;
251  if (myBrushsurface != src.myBrushsurface) return false;
252  if (myUsepartinglines != src.myUsepartinglines) return false;
253  if (myScreenradius != src.myScreenradius) return false;
254  if (myObjectradius != src.myObjectradius) return false;
255  if (mySoft != src.mySoft) return false;
256  if (mySpacing != src.mySpacing) return false;
257  if (myDensity != src.myDensity) return false;
258  if (myBrushmaintainlength != src.myBrushmaintainlength) return false;
259  if (myBrushsnaptosurface != src.myBrushsnaptosurface) return false;
260  if (myBrushbend != src.myBrushbend) return false;
261  if (myBrushbendfalloff != src.myBrushbendfalloff) return false;
262  if (myLiftmode != src.myLiftmode) return false;
263  if (myLiftangle != src.myLiftangle) return false;
264  if (myAdjustlengthmode != src.myAdjustlengthmode) return false;
265  if (myAdjustlengthvalue != src.myAdjustlengthvalue) return false;
266  if (myAdjustlengthlength != src.myAdjustlengthlength) return false;
267  if (myAdjustlengthmethod != src.myAdjustlengthmethod) return false;
268  if (myMoverotatewithskin != src.myMoverotatewithskin) return false;
269  if (mySculptdoconstrain != src.mySculptdoconstrain) return false;
270  if (mySculptlockroot != src.mySculptlockroot) return false;
271  if (mySmoothtargetsmoothness != src.mySmoothtargetsmoothness) return false;
272  if (myBlurinskinspace != src.myBlurinskinspace) return false;
273  if (myBlurperpoint != src.myBlurperpoint) return false;
274  if (myClumpperpoint != src.myClumpperpoint) return false;
275  if (myPlantmode != src.myPlantmode) return false;
276  if (myPlantinterpolateguides != src.myPlantinterpolateguides) return false;
277  if (myPlantinterpolaterelskin != src.myPlantinterpolaterelskin) return false;
278  if (myPlantlength != src.myPlantlength) return false;
279  if (myPlantsegcount != src.myPlantsegcount) return false;
280  if (myDrawonskin != src.myDrawonskin) return false;
281  if (myDrawcurvetype != src.myDrawcurvetype) return false;
282  if (myDrawsegmode != src.myDrawsegmode) return false;
283  if (myDrawsegcount != src.myDrawsegcount) return false;
284  if (myDrawseglength != src.myDrawseglength) return false;
285  if (myEditactiveprim != src.myEditactiveprim) return false;
286  if (myEditsoft != src.myEditsoft) return false;
287  if (myEditsoftmode != src.myEditsoftmode) return false;
288  if (myEditcurvefrac != src.myEditcurvefrac) return false;
289  if (myEditcurvedist != src.myEditcurvedist) return false;
290  if (myResamplesegmode != src.myResamplesegmode) return false;
291  if (myResamplesegcount != src.myResamplesegcount) return false;
292  if (myResampleseglength != src.myResampleseglength) return false;
293  if (myTwistangle != src.myTwistangle) return false;
294  if (myCurvemaskramp != src.myCurvemaskramp)
295  { if (!myCurvemaskramp || !src.myCurvemaskramp || !(*myCurvemaskramp == *src.myCurvemaskramp)) return false; }
296  if (myGroom != src.myGroom)
297  { /* no == on PRM_DataItem */ return false; }
298  if (myStrands != src.myStrands)
299  { /* no == on PRM_DataItem */ return false; }
300  if (myStrokes != src.myStrokes)
301  { /* no == on PRM_DataItem */ return false; }
302  if (myPreviewutil != src.myPreviewutil) return false;
303  if (myPaintmaskpoints != src.myPaintmaskpoints) return false;
304  if (myGroupnewprims != src.myGroupnewprims) return false;
305  if (myNamenewprims != src.myNamenewprims) return false;
306  if (myActivegroup != src.myActivegroup) return false;
307  if (myNameattrib != src.myNameattrib) return false;
308  if (myActivename != src.myActivename) return false;
309  if (myColorbyname != src.myColorbyname) return false;
310  if (myColorseed != src.myColorseed) return false;
311  if (myXord != src.myXord) return false;
312  if (myRord != src.myRord) return false;
313  if (myT != src.myT) return false;
314  if (myR != src.myR) return false;
315  if (myS != src.myS) return false;
316  if (myShear != src.myShear) return false;
317  if (myScale != src.myScale) return false;
318  if (myP != src.myP) return false;
319  if (myPr != src.myPr) return false;
320  if (myCamxform0 != src.myCamxform0) return false;
321  if (myCamxform1 != src.myCamxform1) return false;
322  if (myCamxform2 != src.myCamxform2) return false;
323  if (myCamxform3 != src.myCamxform3) return false;
324  if (myCampos != src.myCampos) return false;
325  if (myCursorpos != src.myCursorpos) return false;
326  if (myCursordisplace != src.myCursordisplace) return false;
327  if (myRaypos != src.myRaypos) return false;
328  if (myRaydir != src.myRaydir) return false;
329  if (myStrengthscale != src.myStrengthscale) return false;
330  if (myButton != src.myButton) return false;
331  if (myShiftkey != src.myShiftkey) return false;
332  if (myCtrlkey != src.myCtrlkey) return false;
333 
334  return true;
335  }
337  {
338  return !operator==(src);
339  }
353 
354 
355 
356  void buildFromOp(const SOP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
357  {
358  myRecordstrokes = false;
359  if (true)
360  graph->evalOpParm(myRecordstrokes, nodeidx, "recordstrokes", time, 0);
361  myStashnode = ".."_sh;
362  if (true)
363  graph->evalOpParm(myStashnode, nodeidx, "stashnode", time, 0);
364  myGroup = ""_sh;
365  if (true)
366  graph->evalOpParm(myGroup, nodeidx, "group", time, 0);
367  myGrouptype = 0;
368  if (true)
369  graph->evalOpParm(myGrouptype, nodeidx, "grouptype", time, 0);
370  myUsemask = true;
371  if (true)
372  graph->evalOpParm(myUsemask, nodeidx, "usemask", time, 0);
373  myMirror = false;
374  if (true)
375  graph->evalOpParm(myMirror, nodeidx, "mirror", time, 0);
376  myMirrorgroup = ""_sh;
377  if (true)
378  graph->evalOpParm(myMirrorgroup, nodeidx, "mirrorgroup", time, 0);
379  myMirrororigin = UT_Vector3D(0,0,0);
380  if (true)
381  graph->evalOpParm(myMirrororigin, nodeidx, "mirrororigin", time, 0);
382  myMirrordir = UT_Vector3D(1,0,0);
383  if (true)
384  graph->evalOpParm(myMirrordir, nodeidx, "mirrordir", time, 0);
385  myTool = 5;
386  if (true)
387  graph->evalOpParm(myTool, nodeidx, "tool", time, 0);
388  myRaybias = 0.0001;
389  if (true)
390  graph->evalOpParm(myRaybias, nodeidx, "raybias", time, 0);
391  myStrandmode = false;
392  if (true)
393  graph->evalOpParm(myStrandmode, nodeidx, "strandmode", time, 0);
394  myCollidewithskin = true;
395  if (true)
396  graph->evalOpParm(myCollidewithskin, nodeidx, "collidewithskin", time, 0);
397  myBrushsurface = false;
398  if (true)
399  graph->evalOpParm(myBrushsurface, nodeidx, "brushsurface", time, 0);
400  myUsepartinglines = true;
401  if (true)
402  graph->evalOpParm(myUsepartinglines, nodeidx, "usepartinglines", time, 0);
403  myScreenradius = 0;
404  if (true)
405  graph->evalOpParm(myScreenradius, nodeidx, "screenradius", time, 0);
406  myObjectradius = 0;
407  if (true)
408  graph->evalOpParm(myObjectradius, nodeidx, "objectradius", time, 0);
409  mySoft = 0;
410  if (true)
411  graph->evalOpParm(mySoft, nodeidx, "soft", time, 0);
412  mySpacing = 0;
413  if (true)
414  graph->evalOpParm(mySpacing, nodeidx, "spacing", time, 0);
415  myDensity = 1000;
416  if (true)
417  graph->evalOpParm(myDensity, nodeidx, "density", time, 0);
418  myBrushmaintainlength = 0;
419  if (true)
420  graph->evalOpParm(myBrushmaintainlength, nodeidx, "brushmaintainlength", time, 0);
421  myBrushsnaptosurface = false;
422  if (true)
423  graph->evalOpParm(myBrushsnaptosurface, nodeidx, "brushsnaptosurface", time, 0);
424  myBrushbend = 0;
425  if (true)
426  graph->evalOpParm(myBrushbend, nodeidx, "brushbend", time, 0);
427  myBrushbendfalloff = 0;
428  if (true)
429  graph->evalOpParm(myBrushbendfalloff, nodeidx, "brushbendfalloff", time, 0);
430  myLiftmode = 0;
431  if (true)
432  graph->evalOpParm(myLiftmode, nodeidx, "liftmode", time, 0);
433  myLiftangle = 45;
434  if (true)
435  graph->evalOpParm(myLiftangle, nodeidx, "liftangle", time, 0);
436  myAdjustlengthmode = 0;
437  if (true)
438  graph->evalOpParm(myAdjustlengthmode, nodeidx, "adjustlengthmode", time, 0);
439  myAdjustlengthvalue = 0.1;
440  if (true)
441  graph->evalOpParm(myAdjustlengthvalue, nodeidx, "adjustlengthvalue", time, 0);
442  myAdjustlengthlength = 0.1;
443  if (true)
444  graph->evalOpParm(myAdjustlengthlength, nodeidx, "adjustlengthlength", time, 0);
445  myAdjustlengthmethod = 1;
446  if (true)
447  graph->evalOpParm(myAdjustlengthmethod, nodeidx, "adjustlengthmethod", time, 0);
448  myMoverotatewithskin = false;
449  if (true)
450  graph->evalOpParm(myMoverotatewithskin, nodeidx, "moverotatewithskin", time, 0);
451  mySculptdoconstrain = true;
452  if (true)
453  graph->evalOpParm(mySculptdoconstrain, nodeidx, "sculptdoconstrain", time, 0);
454  mySculptlockroot = true;
455  if (true)
456  graph->evalOpParm(mySculptlockroot, nodeidx, "sculptlockroot", time, 0);
457  mySmoothtargetsmoothness = 0.5;
458  if (true)
459  graph->evalOpParm(mySmoothtargetsmoothness, nodeidx, "smoothtargetsmoothness", time, 0);
460  myBlurinskinspace = false;
461  if (true)
462  graph->evalOpParm(myBlurinskinspace, nodeidx, "blurinskinspace", time, 0);
463  myBlurperpoint = false;
464  if (true)
465  graph->evalOpParm(myBlurperpoint, nodeidx, "blurperpoint", time, 0);
466  myClumpperpoint = false;
467  if (true)
468  graph->evalOpParm(myClumpperpoint, nodeidx, "clumpperpoint", time, 0);
469  myPlantmode = 1;
470  if (true)
471  graph->evalOpParm(myPlantmode, nodeidx, "plantmode", time, 0);
472  myPlantinterpolateguides = true;
473  if (true)
474  graph->evalOpParm(myPlantinterpolateguides, nodeidx, "plantinterpolateguides", time, 0);
475  myPlantinterpolaterelskin = true;
476  if (true && ( (true&&!(((getPlantinterpolateguides()==0)))) ) )
477  graph->evalOpParm(myPlantinterpolaterelskin, nodeidx, "plantinterpolaterelskin", time, 0);
478  myPlantlength = 0.01;
479  if (true)
480  graph->evalOpParm(myPlantlength, nodeidx, "plantlength", time, 0);
481  myPlantsegcount = 8;
482  if (true)
483  graph->evalOpParm(myPlantsegcount, nodeidx, "plantsegcount", time, 0);
484  myDrawonskin = false;
485  if (true)
486  graph->evalOpParm(myDrawonskin, nodeidx, "drawonskin", time, 0);
487  myDrawcurvetype = 0;
488  if (true)
489  graph->evalOpParm(myDrawcurvetype, nodeidx, "drawcurvetype", time, 0);
490  myDrawsegmode = 0;
491  if (true)
492  graph->evalOpParm(myDrawsegmode, nodeidx, "drawsegmode", time, 0);
493  myDrawsegcount = 8;
494  if (true && ( (true&&!(((int64(getDrawsegmode())!=0)))) ) )
495  graph->evalOpParm(myDrawsegcount, nodeidx, "drawsegcount", time, 0);
496  myDrawseglength = 0.05;
497  if (true && ( (true&&!(((int64(getDrawsegmode())!=1)))) ) )
498  graph->evalOpParm(myDrawseglength, nodeidx, "drawseglength", time, 0);
499  myEditactiveprim = 0;
500  if (true)
501  graph->evalOpParm(myEditactiveprim, nodeidx, "editactiveprim", time, 0);
502  myEditsoft = true;
503  if (true)
504  graph->evalOpParm(myEditsoft, nodeidx, "editsoft", time, 0);
505  myEditsoftmode = 1;
506  if (true)
507  graph->evalOpParm(myEditsoftmode, nodeidx, "editsoftmode", time, 0);
508  myEditcurvefrac = 1;
509  if (true)
510  graph->evalOpParm(myEditcurvefrac, nodeidx, "editcurvefrac", time, 0);
511  myEditcurvedist = 1;
512  if (true)
513  graph->evalOpParm(myEditcurvedist, nodeidx, "editcurvedist", time, 0);
514  myResamplesegmode = 0;
515  if (true)
516  graph->evalOpParm(myResamplesegmode, nodeidx, "resamplesegmode", time, 0);
517  myResamplesegcount = 8;
518  if (true && ( (true&&!(((int64(getResamplesegmode())!=0)))) ) )
519  graph->evalOpParm(myResamplesegcount, nodeidx, "resamplesegcount", time, 0);
520  myResampleseglength = 0.05;
521  if (true && ( (true&&!(((int64(getResamplesegmode())!=1)))) ) )
522  graph->evalOpParm(myResampleseglength, nodeidx, "resampleseglength", time, 0);
523  myTwistangle = 45;
524  if (true)
525  graph->evalOpParm(myTwistangle, nodeidx, "twistangle", time, 0);
526  myCurvemaskramp = UT_SharedPtr<UT_Ramp>(0);
527  if (true)
528  graph->evalOpParm(myCurvemaskramp, nodeidx, "curvemaskramp", time, 0);
529  myGroom = PRM_DataItemHandle(0);
530  if (true)
531  graph->evalOpParm(myGroom, nodeidx, "groom", time, 0);
532  myStrands = PRM_DataItemHandle(0);
533  if (true)
534  graph->evalOpParm(myStrands, nodeidx, "strands", time, 0);
535  myStrokes = PRM_DataItemHandle(0);
536  if (true)
537  graph->evalOpParm(myStrokes, nodeidx, "strokes", time, 0);
538  myPreviewutil = true;
539  if (true)
540  graph->evalOpParm(myPreviewutil, nodeidx, "previewutil", time, 0);
541  myPaintmaskpoints = false;
542  if (true)
543  graph->evalOpParm(myPaintmaskpoints, nodeidx, "paintmaskpoints", time, 0);
544  myGroupnewprims = false;
545  if (true)
546  graph->evalOpParm(myGroupnewprims, nodeidx, "groupnewprims", time, 0);
547  myNamenewprims = true;
548  if (true)
549  graph->evalOpParm(myNamenewprims, nodeidx, "namenewprims", time, 0);
550  myActivegroup = ""_sh;
551  if (true)
552  graph->evalOpParm(myActivegroup, nodeidx, "activegroup", time, 0);
553  myNameattrib = ""_sh;
554  if (true)
555  graph->evalOpParm(myNameattrib, nodeidx, "nameattrib", time, 0);
556  myActivename = ""_sh;
557  if (true)
558  graph->evalOpParm(myActivename, nodeidx, "activename", time, 0);
559  myColorbyname = false;
560  if (true)
561  graph->evalOpParm(myColorbyname, nodeidx, "colorbyname", time, 0);
562  myColorseed = 0;
563  if (true)
564  graph->evalOpParm(myColorseed, nodeidx, "colorseed", time, 0);
565  myXord = 0;
566  if (true)
567  graph->evalOpParm(myXord, nodeidx, "xOrd", time, 0);
568  myRord = 0;
569  if (true)
570  graph->evalOpParm(myRord, nodeidx, "rOrd", time, 0);
571  myT = UT_Vector3D(0,0,0);
572  if (true)
573  graph->evalOpParm(myT, nodeidx, "t", time, 0);
574  myR = UT_Vector3D(0,0,0);
575  if (true)
576  graph->evalOpParm(myR, nodeidx, "r", time, 0);
577  myS = UT_Vector3D(1,1,1);
578  if (true)
579  graph->evalOpParm(myS, nodeidx, "s", time, 0);
580  myShear = UT_Vector3D(0,0,0);
581  if (true)
582  graph->evalOpParm(myShear, nodeidx, "shear", time, 0);
583  myScale = 1;
584  if (true)
585  graph->evalOpParm(myScale, nodeidx, "scale", time, 0);
586  myP = UT_Vector3D(0,0,0);
587  if (true)
588  graph->evalOpParm(myP, nodeidx, "p", time, 0);
589  myPr = UT_Vector3D(0,0,0);
590  if (true)
591  graph->evalOpParm(myPr, nodeidx, "pr", time, 0);
592  myCamxform0 = 0;
593  if (true)
594  graph->evalOpParm(myCamxform0, nodeidx, "camxform0", time, 0);
595  myCamxform1 = 0;
596  if (true)
597  graph->evalOpParm(myCamxform1, nodeidx, "camxform1", time, 0);
598  myCamxform2 = 0;
599  if (true)
600  graph->evalOpParm(myCamxform2, nodeidx, "camxform2", time, 0);
601  myCamxform3 = 0;
602  if (true)
603  graph->evalOpParm(myCamxform3, nodeidx, "camxform3", time, 0);
604  myCampos = 0;
605  if (true)
606  graph->evalOpParm(myCampos, nodeidx, "campos", time, 0);
607  myCursorpos = 0;
608  if (true)
609  graph->evalOpParm(myCursorpos, nodeidx, "cursorpos", time, 0);
610  myCursordisplace = 0;
611  if (true)
612  graph->evalOpParm(myCursordisplace, nodeidx, "cursordisplace", time, 0);
613  myRaypos = 0;
614  if (true)
615  graph->evalOpParm(myRaypos, nodeidx, "raypos", time, 0);
616  myRaydir = 0;
617  if (true)
618  graph->evalOpParm(myRaydir, nodeidx, "raydir", time, 0);
619  myStrengthscale = 0;
620  if (true)
621  graph->evalOpParm(myStrengthscale, nodeidx, "strengthscale", time, 0);
622  myButton = 0;
623  if (true)
624  graph->evalOpParm(myButton, nodeidx, "button", time, 0);
625  myShiftkey = false;
626  if (true)
627  graph->evalOpParm(myShiftkey, nodeidx, "shiftkey", time, 0);
628  myCtrlkey = false;
629  if (true)
630  graph->evalOpParm(myCtrlkey, nodeidx, "ctrlkey", time, 0);
631 
632  }
633 
634 
635  void loadFromOpSubclass(const LoadParms &loadparms) override
636  {
637  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
638  }
639 
640 
641  void copyFrom(const SOP_NodeParms *src) override
642  {
643  *this = *((const SOP_GuideGroomCoreParms *)src);
644  }
645 
646  template <typename T>
647  void
648  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
649  {
650  if (idx.size() < 1)
651  return;
652  UT_ASSERT(idx.size() == instance.size()+1);
653  if (idx.size() != instance.size()+1)
654  return;
655  switch (idx[0])
656  {
657  case 0:
658  coerceValue(value, myRecordstrokes);
659  break;
660  case 1:
661  coerceValue(value, myStashnode);
662  break;
663  case 2:
664  coerceValue(value, myGroup);
665  break;
666  case 3:
667  coerceValue(value, myGrouptype);
668  break;
669  case 4:
670  coerceValue(value, myUsemask);
671  break;
672  case 5:
673  coerceValue(value, myMirror);
674  break;
675  case 6:
676  coerceValue(value, myMirrorgroup);
677  break;
678  case 7:
679  coerceValue(value, myMirrororigin);
680  break;
681  case 8:
682  coerceValue(value, myMirrordir);
683  break;
684  case 9:
685  coerceValue(value, myTool);
686  break;
687  case 10:
688  coerceValue(value, myRaybias);
689  break;
690  case 11:
691  coerceValue(value, myStrandmode);
692  break;
693  case 12:
694  coerceValue(value, myCollidewithskin);
695  break;
696  case 13:
697  coerceValue(value, myBrushsurface);
698  break;
699  case 14:
700  coerceValue(value, myUsepartinglines);
701  break;
702  case 15:
703  coerceValue(value, myScreenradius);
704  break;
705  case 16:
706  coerceValue(value, myObjectradius);
707  break;
708  case 17:
709  coerceValue(value, mySoft);
710  break;
711  case 18:
712  coerceValue(value, mySpacing);
713  break;
714  case 19:
715  coerceValue(value, myDensity);
716  break;
717  case 20:
718  coerceValue(value, myBrushmaintainlength);
719  break;
720  case 21:
721  coerceValue(value, myBrushsnaptosurface);
722  break;
723  case 22:
724  coerceValue(value, myBrushbend);
725  break;
726  case 23:
727  coerceValue(value, myBrushbendfalloff);
728  break;
729  case 24:
730  coerceValue(value, myLiftmode);
731  break;
732  case 25:
733  coerceValue(value, myLiftangle);
734  break;
735  case 26:
736  coerceValue(value, myAdjustlengthmode);
737  break;
738  case 27:
739  coerceValue(value, myAdjustlengthvalue);
740  break;
741  case 28:
742  coerceValue(value, myAdjustlengthlength);
743  break;
744  case 29:
745  coerceValue(value, myAdjustlengthmethod);
746  break;
747  case 30:
748  coerceValue(value, myMoverotatewithskin);
749  break;
750  case 31:
751  coerceValue(value, mySculptdoconstrain);
752  break;
753  case 32:
754  coerceValue(value, mySculptlockroot);
755  break;
756  case 33:
757  coerceValue(value, mySmoothtargetsmoothness);
758  break;
759  case 34:
760  coerceValue(value, myBlurinskinspace);
761  break;
762  case 35:
763  coerceValue(value, myBlurperpoint);
764  break;
765  case 36:
766  coerceValue(value, myClumpperpoint);
767  break;
768  case 37:
769  coerceValue(value, myPlantmode);
770  break;
771  case 38:
772  coerceValue(value, myPlantinterpolateguides);
773  break;
774  case 39:
775  coerceValue(value, myPlantinterpolaterelskin);
776  break;
777  case 40:
778  coerceValue(value, myPlantlength);
779  break;
780  case 41:
781  coerceValue(value, myPlantsegcount);
782  break;
783  case 42:
784  coerceValue(value, myDrawonskin);
785  break;
786  case 43:
787  coerceValue(value, myDrawcurvetype);
788  break;
789  case 44:
790  coerceValue(value, myDrawsegmode);
791  break;
792  case 45:
793  coerceValue(value, myDrawsegcount);
794  break;
795  case 46:
796  coerceValue(value, myDrawseglength);
797  break;
798  case 47:
799  coerceValue(value, myEditactiveprim);
800  break;
801  case 48:
802  coerceValue(value, myEditsoft);
803  break;
804  case 49:
805  coerceValue(value, myEditsoftmode);
806  break;
807  case 50:
808  coerceValue(value, myEditcurvefrac);
809  break;
810  case 51:
811  coerceValue(value, myEditcurvedist);
812  break;
813  case 52:
814  coerceValue(value, myResamplesegmode);
815  break;
816  case 53:
817  coerceValue(value, myResamplesegcount);
818  break;
819  case 54:
820  coerceValue(value, myResampleseglength);
821  break;
822  case 55:
823  coerceValue(value, myTwistangle);
824  break;
825  case 56:
826  coerceValue(value, myCurvemaskramp);
827  break;
828  case 57:
829  coerceValue(value, myGroom);
830  break;
831  case 58:
832  coerceValue(value, myStrands);
833  break;
834  case 59:
835  coerceValue(value, myStrokes);
836  break;
837  case 60:
838  coerceValue(value, myPreviewutil);
839  break;
840  case 61:
841  coerceValue(value, myPaintmaskpoints);
842  break;
843  case 62:
844  coerceValue(value, myGroupnewprims);
845  break;
846  case 63:
847  coerceValue(value, myNamenewprims);
848  break;
849  case 64:
850  coerceValue(value, myActivegroup);
851  break;
852  case 65:
853  coerceValue(value, myNameattrib);
854  break;
855  case 66:
856  coerceValue(value, myActivename);
857  break;
858  case 67:
859  coerceValue(value, myColorbyname);
860  break;
861  case 68:
862  coerceValue(value, myColorseed);
863  break;
864  case 69:
865  coerceValue(value, myXord);
866  break;
867  case 70:
868  coerceValue(value, myRord);
869  break;
870  case 71:
871  coerceValue(value, myT);
872  break;
873  case 72:
874  coerceValue(value, myR);
875  break;
876  case 73:
877  coerceValue(value, myS);
878  break;
879  case 74:
880  coerceValue(value, myShear);
881  break;
882  case 75:
883  coerceValue(value, myScale);
884  break;
885  case 76:
886  coerceValue(value, myP);
887  break;
888  case 77:
889  coerceValue(value, myPr);
890  break;
891  case 78:
892  coerceValue(value, myCamxform0);
893  break;
894  case 79:
895  coerceValue(value, myCamxform1);
896  break;
897  case 80:
898  coerceValue(value, myCamxform2);
899  break;
900  case 81:
901  coerceValue(value, myCamxform3);
902  break;
903  case 82:
904  coerceValue(value, myCampos);
905  break;
906  case 83:
907  coerceValue(value, myCursorpos);
908  break;
909  case 84:
910  coerceValue(value, myCursordisplace);
911  break;
912  case 85:
913  coerceValue(value, myRaypos);
914  break;
915  case 86:
916  coerceValue(value, myRaydir);
917  break;
918  case 87:
919  coerceValue(value, myStrengthscale);
920  break;
921  case 88:
922  coerceValue(value, myButton);
923  break;
924  case 89:
925  coerceValue(value, myShiftkey);
926  break;
927  case 90:
928  coerceValue(value, myCtrlkey);
929  break;
930 
931  }
932  }
933 
934  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
935  { doGetParmValue(idx, instance, value); }
936  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
937  { doGetParmValue(idx, instance, value); }
938  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
939  { doGetParmValue(idx, instance, value); }
940  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
941  { doGetParmValue(idx, instance, value); }
942  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
943  { doGetParmValue(idx, instance, value); }
944  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
945  { doGetParmValue(idx, instance, value); }
946  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
947  { doGetParmValue(idx, instance, value); }
948  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
949  { doGetParmValue(idx, instance, value); }
950  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
951  { doGetParmValue(idx, instance, value); }
952  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
953  { doGetParmValue(idx, instance, value); }
954  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
955  { doGetParmValue(idx, instance, value); }
956 
957  template <typename T>
958  void
959  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
960  {
961  if (idx.size() < 1)
962  return;
963  UT_ASSERT(idx.size() == instance.size()+1);
964  if (idx.size() != instance.size()+1)
965  return;
966  switch (idx[0])
967  {
968  case 0:
969  coerceValue(myRecordstrokes, ( ( value ) ));
970  break;
971  case 1:
972  coerceValue(myStashnode, ( ( value ) ));
973  break;
974  case 2:
975  coerceValue(myGroup, ( ( value ) ));
976  break;
977  case 3:
978  coerceValue(myGrouptype, clampMinValue(0, clampMaxValue(4, value ) ));
979  break;
980  case 4:
981  coerceValue(myUsemask, ( ( value ) ));
982  break;
983  case 5:
984  coerceValue(myMirror, ( ( value ) ));
985  break;
986  case 6:
987  coerceValue(myMirrorgroup, ( ( value ) ));
988  break;
989  case 7:
990  coerceValue(myMirrororigin, ( ( value ) ));
991  break;
992  case 8:
993  coerceValue(myMirrordir, ( ( value ) ));
994  break;
995  case 9:
996  coerceValue(myTool, clampMinValue(0, clampMaxValue(22, value ) ));
997  break;
998  case 10:
999  coerceValue(myRaybias, ( ( value ) ));
1000  break;
1001  case 11:
1002  coerceValue(myStrandmode, ( ( value ) ));
1003  break;
1004  case 12:
1005  coerceValue(myCollidewithskin, ( ( value ) ));
1006  break;
1007  case 13:
1008  coerceValue(myBrushsurface, ( ( value ) ));
1009  break;
1010  case 14:
1011  coerceValue(myUsepartinglines, ( ( value ) ));
1012  break;
1013  case 15:
1014  coerceValue(myScreenradius, ( ( value ) ));
1015  break;
1016  case 16:
1017  coerceValue(myObjectradius, ( ( value ) ));
1018  break;
1019  case 17:
1020  coerceValue(mySoft, ( ( value ) ));
1021  break;
1022  case 18:
1023  coerceValue(mySpacing, ( ( value ) ));
1024  break;
1025  case 19:
1026  coerceValue(myDensity, ( ( value ) ));
1027  break;
1028  case 20:
1029  coerceValue(myBrushmaintainlength, ( ( value ) ));
1030  break;
1031  case 21:
1032  coerceValue(myBrushsnaptosurface, ( ( value ) ));
1033  break;
1034  case 22:
1035  coerceValue(myBrushbend, ( ( value ) ));
1036  break;
1037  case 23:
1038  coerceValue(myBrushbendfalloff, ( ( value ) ));
1039  break;
1040  case 24:
1041  coerceValue(myLiftmode, clampMinValue(0, clampMaxValue(1, value ) ));
1042  break;
1043  case 25:
1044  coerceValue(myLiftangle, ( ( value ) ));
1045  break;
1046  case 26:
1047  coerceValue(myAdjustlengthmode, clampMinValue(0, clampMaxValue(1, value ) ));
1048  break;
1049  case 27:
1050  coerceValue(myAdjustlengthvalue, ( ( value ) ));
1051  break;
1052  case 28:
1053  coerceValue(myAdjustlengthlength, ( ( value ) ));
1054  break;
1055  case 29:
1056  coerceValue(myAdjustlengthmethod, clampMinValue(0, clampMaxValue(1, value ) ));
1057  break;
1058  case 30:
1059  coerceValue(myMoverotatewithskin, ( ( value ) ));
1060  break;
1061  case 31:
1062  coerceValue(mySculptdoconstrain, ( ( value ) ));
1063  break;
1064  case 32:
1065  coerceValue(mySculptlockroot, ( ( value ) ));
1066  break;
1067  case 33:
1068  coerceValue(mySmoothtargetsmoothness, ( ( value ) ));
1069  break;
1070  case 34:
1071  coerceValue(myBlurinskinspace, ( ( value ) ));
1072  break;
1073  case 35:
1074  coerceValue(myBlurperpoint, ( ( value ) ));
1075  break;
1076  case 36:
1077  coerceValue(myClumpperpoint, ( ( value ) ));
1078  break;
1079  case 37:
1080  coerceValue(myPlantmode, clampMinValue(0, clampMaxValue(1, value ) ));
1081  break;
1082  case 38:
1083  coerceValue(myPlantinterpolateguides, ( ( value ) ));
1084  break;
1085  case 39:
1086  coerceValue(myPlantinterpolaterelskin, ( ( value ) ));
1087  break;
1088  case 40:
1089  coerceValue(myPlantlength, ( ( value ) ));
1090  break;
1091  case 41:
1092  coerceValue(myPlantsegcount, ( ( value ) ));
1093  break;
1094  case 42:
1095  coerceValue(myDrawonskin, ( ( value ) ));
1096  break;
1097  case 43:
1098  coerceValue(myDrawcurvetype, clampMinValue(0, clampMaxValue(1, value ) ));
1099  break;
1100  case 44:
1101  coerceValue(myDrawsegmode, clampMinValue(0, clampMaxValue(1, value ) ));
1102  break;
1103  case 45:
1104  coerceValue(myDrawsegcount, ( ( value ) ));
1105  break;
1106  case 46:
1107  coerceValue(myDrawseglength, ( ( value ) ));
1108  break;
1109  case 47:
1110  coerceValue(myEditactiveprim, ( ( value ) ));
1111  break;
1112  case 48:
1113  coerceValue(myEditsoft, ( ( value ) ));
1114  break;
1115  case 49:
1116  coerceValue(myEditsoftmode, clampMinValue(0, clampMaxValue(2, value ) ));
1117  break;
1118  case 50:
1119  coerceValue(myEditcurvefrac, ( ( value ) ));
1120  break;
1121  case 51:
1122  coerceValue(myEditcurvedist, ( ( value ) ));
1123  break;
1124  case 52:
1125  coerceValue(myResamplesegmode, clampMinValue(0, clampMaxValue(3, value ) ));
1126  break;
1127  case 53:
1128  coerceValue(myResamplesegcount, ( ( value ) ));
1129  break;
1130  case 54:
1131  coerceValue(myResampleseglength, ( ( value ) ));
1132  break;
1133  case 55:
1134  coerceValue(myTwistangle, ( ( value ) ));
1135  break;
1136  case 56:
1137  coerceValue(myCurvemaskramp, clampMinValue(0, ( value ) ));
1138  break;
1139  case 57:
1140  coerceValue(myGroom, ( ( value ) ));
1141  break;
1142  case 58:
1143  coerceValue(myStrands, ( ( value ) ));
1144  break;
1145  case 59:
1146  coerceValue(myStrokes, ( ( value ) ));
1147  break;
1148  case 60:
1149  coerceValue(myPreviewutil, ( ( value ) ));
1150  break;
1151  case 61:
1152  coerceValue(myPaintmaskpoints, ( ( value ) ));
1153  break;
1154  case 62:
1155  coerceValue(myGroupnewprims, ( ( value ) ));
1156  break;
1157  case 63:
1158  coerceValue(myNamenewprims, ( ( value ) ));
1159  break;
1160  case 64:
1161  coerceValue(myActivegroup, ( ( value ) ));
1162  break;
1163  case 65:
1164  coerceValue(myNameattrib, ( ( value ) ));
1165  break;
1166  case 66:
1167  coerceValue(myActivename, ( ( value ) ));
1168  break;
1169  case 67:
1170  coerceValue(myColorbyname, ( ( value ) ));
1171  break;
1172  case 68:
1173  coerceValue(myColorseed, ( ( value ) ));
1174  break;
1175  case 69:
1176  coerceValue(myXord, clampMinValue(0, clampMaxValue(5, value ) ));
1177  break;
1178  case 70:
1179  coerceValue(myRord, clampMinValue(0, clampMaxValue(5, value ) ));
1180  break;
1181  case 71:
1182  coerceValue(myT, ( ( value ) ));
1183  break;
1184  case 72:
1185  coerceValue(myR, ( ( value ) ));
1186  break;
1187  case 73:
1188  coerceValue(myS, ( ( value ) ));
1189  break;
1190  case 74:
1191  coerceValue(myShear, ( ( value ) ));
1192  break;
1193  case 75:
1194  coerceValue(myScale, ( ( value ) ));
1195  break;
1196  case 76:
1197  coerceValue(myP, ( ( value ) ));
1198  break;
1199  case 77:
1200  coerceValue(myPr, ( ( value ) ));
1201  break;
1202  case 78:
1203  coerceValue(myCamxform0, ( ( value ) ));
1204  break;
1205  case 79:
1206  coerceValue(myCamxform1, ( ( value ) ));
1207  break;
1208  case 80:
1209  coerceValue(myCamxform2, ( ( value ) ));
1210  break;
1211  case 81:
1212  coerceValue(myCamxform3, ( ( value ) ));
1213  break;
1214  case 82:
1215  coerceValue(myCampos, ( ( value ) ));
1216  break;
1217  case 83:
1218  coerceValue(myCursorpos, ( ( value ) ));
1219  break;
1220  case 84:
1221  coerceValue(myCursordisplace, ( ( value ) ));
1222  break;
1223  case 85:
1224  coerceValue(myRaypos, ( ( value ) ));
1225  break;
1226  case 86:
1227  coerceValue(myRaydir, ( ( value ) ));
1228  break;
1229  case 87:
1230  coerceValue(myStrengthscale, ( ( value ) ));
1231  break;
1232  case 88:
1233  coerceValue(myButton, clampMinValue(0, clampMaxValue(2, value ) ));
1234  break;
1235  case 89:
1236  coerceValue(myShiftkey, ( ( value ) ));
1237  break;
1238  case 90:
1239  coerceValue(myCtrlkey, ( ( value ) ));
1240  break;
1241 
1242  }
1243  }
1244 
1245  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
1246  { doSetParmValue(idx, instance, value); }
1247  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
1248  { doSetParmValue(idx, instance, value); }
1249  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
1250  { doSetParmValue(idx, instance, value); }
1251  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
1252  { doSetParmValue(idx, instance, value); }
1253  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
1254  { doSetParmValue(idx, instance, value); }
1255  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
1256  { doSetParmValue(idx, instance, value); }
1257  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
1258  { doSetParmValue(idx, instance, value); }
1259  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
1260  { doSetParmValue(idx, instance, value); }
1261  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
1262  { doSetParmValue(idx, instance, value); }
1263  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
1264  { doSetParmValue(idx, instance, value); }
1265  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
1266  { doSetParmValue(idx, instance, value); }
1267 
1268  exint getNestNumParms(TempIndex idx) const override
1269  {
1270  if (idx.size() == 0)
1271  return 91;
1272  switch (idx[0])
1273  {
1274 
1275  }
1276  // Invalid
1277  return 0;
1278  }
1279 
1280  const char *getNestParmName(TempIndex fieldnum) const override
1281  {
1282  if (fieldnum.size() < 1)
1283  return 0;
1284  switch (fieldnum[0])
1285  {
1286  case 0:
1287  return "recordstrokes";
1288  case 1:
1289  return "stashnode";
1290  case 2:
1291  return "group";
1292  case 3:
1293  return "grouptype";
1294  case 4:
1295  return "usemask";
1296  case 5:
1297  return "mirror";
1298  case 6:
1299  return "mirrorgroup";
1300  case 7:
1301  return "mirrororigin";
1302  case 8:
1303  return "mirrordir";
1304  case 9:
1305  return "tool";
1306  case 10:
1307  return "raybias";
1308  case 11:
1309  return "strandmode";
1310  case 12:
1311  return "collidewithskin";
1312  case 13:
1313  return "brushsurface";
1314  case 14:
1315  return "usepartinglines";
1316  case 15:
1317  return "screenradius";
1318  case 16:
1319  return "objectradius";
1320  case 17:
1321  return "soft";
1322  case 18:
1323  return "spacing";
1324  case 19:
1325  return "density";
1326  case 20:
1327  return "brushmaintainlength";
1328  case 21:
1329  return "brushsnaptosurface";
1330  case 22:
1331  return "brushbend";
1332  case 23:
1333  return "brushbendfalloff";
1334  case 24:
1335  return "liftmode";
1336  case 25:
1337  return "liftangle";
1338  case 26:
1339  return "adjustlengthmode";
1340  case 27:
1341  return "adjustlengthvalue";
1342  case 28:
1343  return "adjustlengthlength";
1344  case 29:
1345  return "adjustlengthmethod";
1346  case 30:
1347  return "moverotatewithskin";
1348  case 31:
1349  return "sculptdoconstrain";
1350  case 32:
1351  return "sculptlockroot";
1352  case 33:
1353  return "smoothtargetsmoothness";
1354  case 34:
1355  return "blurinskinspace";
1356  case 35:
1357  return "blurperpoint";
1358  case 36:
1359  return "clumpperpoint";
1360  case 37:
1361  return "plantmode";
1362  case 38:
1363  return "plantinterpolateguides";
1364  case 39:
1365  return "plantinterpolaterelskin";
1366  case 40:
1367  return "plantlength";
1368  case 41:
1369  return "plantsegcount";
1370  case 42:
1371  return "drawonskin";
1372  case 43:
1373  return "drawcurvetype";
1374  case 44:
1375  return "drawsegmode";
1376  case 45:
1377  return "drawsegcount";
1378  case 46:
1379  return "drawseglength";
1380  case 47:
1381  return "editactiveprim";
1382  case 48:
1383  return "editsoft";
1384  case 49:
1385  return "editsoftmode";
1386  case 50:
1387  return "editcurvefrac";
1388  case 51:
1389  return "editcurvedist";
1390  case 52:
1391  return "resamplesegmode";
1392  case 53:
1393  return "resamplesegcount";
1394  case 54:
1395  return "resampleseglength";
1396  case 55:
1397  return "twistangle";
1398  case 56:
1399  return "curvemaskramp";
1400  case 57:
1401  return "groom";
1402  case 58:
1403  return "strands";
1404  case 59:
1405  return "strokes";
1406  case 60:
1407  return "previewutil";
1408  case 61:
1409  return "paintmaskpoints";
1410  case 62:
1411  return "groupnewprims";
1412  case 63:
1413  return "namenewprims";
1414  case 64:
1415  return "activegroup";
1416  case 65:
1417  return "nameattrib";
1418  case 66:
1419  return "activename";
1420  case 67:
1421  return "colorbyname";
1422  case 68:
1423  return "colorseed";
1424  case 69:
1425  return "xOrd";
1426  case 70:
1427  return "rOrd";
1428  case 71:
1429  return "t";
1430  case 72:
1431  return "r";
1432  case 73:
1433  return "s";
1434  case 74:
1435  return "shear";
1436  case 75:
1437  return "scale";
1438  case 76:
1439  return "p";
1440  case 77:
1441  return "pr";
1442  case 78:
1443  return "camxform0";
1444  case 79:
1445  return "camxform1";
1446  case 80:
1447  return "camxform2";
1448  case 81:
1449  return "camxform3";
1450  case 82:
1451  return "campos";
1452  case 83:
1453  return "cursorpos";
1454  case 84:
1455  return "cursordisplace";
1456  case 85:
1457  return "raypos";
1458  case 86:
1459  return "raydir";
1460  case 87:
1461  return "strengthscale";
1462  case 88:
1463  return "button";
1464  case 89:
1465  return "shiftkey";
1466  case 90:
1467  return "ctrlkey";
1468 
1469  }
1470  return 0;
1471  }
1472 
1473  ParmType getNestParmType(TempIndex fieldnum) const override
1474  {
1475  if (fieldnum.size() < 1)
1476  return PARM_UNSUPPORTED;
1477  switch (fieldnum[0])
1478  {
1479  case 0:
1480  return PARM_INTEGER;
1481  case 1:
1482  return PARM_STRING;
1483  case 2:
1484  return PARM_STRING;
1485  case 3:
1486  return PARM_INTEGER;
1487  case 4:
1488  return PARM_INTEGER;
1489  case 5:
1490  return PARM_INTEGER;
1491  case 6:
1492  return PARM_STRING;
1493  case 7:
1494  return PARM_VECTOR3;
1495  case 8:
1496  return PARM_VECTOR3;
1497  case 9:
1498  return PARM_INTEGER;
1499  case 10:
1500  return PARM_FLOAT;
1501  case 11:
1502  return PARM_INTEGER;
1503  case 12:
1504  return PARM_INTEGER;
1505  case 13:
1506  return PARM_INTEGER;
1507  case 14:
1508  return PARM_INTEGER;
1509  case 15:
1510  return PARM_FLOAT;
1511  case 16:
1512  return PARM_FLOAT;
1513  case 17:
1514  return PARM_FLOAT;
1515  case 18:
1516  return PARM_FLOAT;
1517  case 19:
1518  return PARM_FLOAT;
1519  case 20:
1520  return PARM_FLOAT;
1521  case 21:
1522  return PARM_INTEGER;
1523  case 22:
1524  return PARM_FLOAT;
1525  case 23:
1526  return PARM_FLOAT;
1527  case 24:
1528  return PARM_INTEGER;
1529  case 25:
1530  return PARM_FLOAT;
1531  case 26:
1532  return PARM_INTEGER;
1533  case 27:
1534  return PARM_FLOAT;
1535  case 28:
1536  return PARM_FLOAT;
1537  case 29:
1538  return PARM_INTEGER;
1539  case 30:
1540  return PARM_INTEGER;
1541  case 31:
1542  return PARM_INTEGER;
1543  case 32:
1544  return PARM_INTEGER;
1545  case 33:
1546  return PARM_FLOAT;
1547  case 34:
1548  return PARM_INTEGER;
1549  case 35:
1550  return PARM_INTEGER;
1551  case 36:
1552  return PARM_INTEGER;
1553  case 37:
1554  return PARM_INTEGER;
1555  case 38:
1556  return PARM_INTEGER;
1557  case 39:
1558  return PARM_INTEGER;
1559  case 40:
1560  return PARM_FLOAT;
1561  case 41:
1562  return PARM_INTEGER;
1563  case 42:
1564  return PARM_INTEGER;
1565  case 43:
1566  return PARM_INTEGER;
1567  case 44:
1568  return PARM_INTEGER;
1569  case 45:
1570  return PARM_INTEGER;
1571  case 46:
1572  return PARM_FLOAT;
1573  case 47:
1574  return PARM_INTEGER;
1575  case 48:
1576  return PARM_INTEGER;
1577  case 49:
1578  return PARM_INTEGER;
1579  case 50:
1580  return PARM_FLOAT;
1581  case 51:
1582  return PARM_FLOAT;
1583  case 52:
1584  return PARM_INTEGER;
1585  case 53:
1586  return PARM_INTEGER;
1587  case 54:
1588  return PARM_FLOAT;
1589  case 55:
1590  return PARM_FLOAT;
1591  case 56:
1592  return PARM_RAMP;
1593  case 57:
1594  return PARM_DATA;
1595  case 58:
1596  return PARM_DATA;
1597  case 59:
1598  return PARM_DATA;
1599  case 60:
1600  return PARM_INTEGER;
1601  case 61:
1602  return PARM_INTEGER;
1603  case 62:
1604  return PARM_INTEGER;
1605  case 63:
1606  return PARM_INTEGER;
1607  case 64:
1608  return PARM_STRING;
1609  case 65:
1610  return PARM_STRING;
1611  case 66:
1612  return PARM_STRING;
1613  case 67:
1614  return PARM_INTEGER;
1615  case 68:
1616  return PARM_INTEGER;
1617  case 69:
1618  return PARM_INTEGER;
1619  case 70:
1620  return PARM_INTEGER;
1621  case 71:
1622  return PARM_VECTOR3;
1623  case 72:
1624  return PARM_VECTOR3;
1625  case 73:
1626  return PARM_VECTOR3;
1627  case 74:
1628  return PARM_VECTOR3;
1629  case 75:
1630  return PARM_FLOAT;
1631  case 76:
1632  return PARM_VECTOR3;
1633  case 77:
1634  return PARM_VECTOR3;
1635  case 78:
1636  return PARM_VECTOR4;
1637  case 79:
1638  return PARM_VECTOR4;
1639  case 80:
1640  return PARM_VECTOR4;
1641  case 81:
1642  return PARM_VECTOR4;
1643  case 82:
1644  return PARM_VECTOR3;
1645  case 83:
1646  return PARM_VECTOR2;
1647  case 84:
1648  return PARM_VECTOR3;
1649  case 85:
1650  return PARM_VECTOR3;
1651  case 86:
1652  return PARM_VECTOR3;
1653  case 87:
1654  return PARM_FLOAT;
1655  case 88:
1656  return PARM_INTEGER;
1657  case 89:
1658  return PARM_INTEGER;
1659  case 90:
1660  return PARM_INTEGER;
1661 
1662  }
1663  return PARM_UNSUPPORTED;
1664  }
1665 
1666  // Boiler plate to load individual types.
1667  static void loadData(UT_IStream &is, int64 &v)
1668  { is.bread(&v, 1); }
1669  static void loadData(UT_IStream &is, bool &v)
1670  { int64 iv; is.bread(&iv, 1); v = iv; }
1671  static void loadData(UT_IStream &is, fpreal64 &v)
1672  { is.bread<fpreal64>(&v, 1); }
1673  static void loadData(UT_IStream &is, UT_Vector2D &v)
1674  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
1675  static void loadData(UT_IStream &is, UT_Vector3D &v)
1676  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1677  is.bread<fpreal64>(&v.z(), 1); }
1678  static void loadData(UT_IStream &is, UT_Vector4D &v)
1679  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1680  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
1681  static void loadData(UT_IStream &is, UT_Matrix2D &v)
1682  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
1683  static void loadData(UT_IStream &is, UT_Matrix3D &v)
1684  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
1685  static void loadData(UT_IStream &is, UT_Matrix4D &v)
1686  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
1687  static void loadData(UT_IStream &is, UT_Vector2I &v)
1688  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
1689  static void loadData(UT_IStream &is, UT_Vector3I &v)
1690  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1691  is.bread<int64>(&v.z(), 1); }
1692  static void loadData(UT_IStream &is, UT_Vector4I &v)
1693  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1694  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
1696  { is.bread(v); }
1698  { UT_StringHolder rampdata;
1699  loadData(is, rampdata);
1700  if (rampdata.isstring())
1701  {
1702  v.reset(new UT_Ramp());
1703  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
1704  v->load(istr);
1705  }
1706  else v.reset();
1707  }
1710  loadData(is, data);
1711  if (data.isstring())
1712  {
1713  // Find the data type.
1714  const char *colon = UT_StringWrap(data).findChar(':');
1715  if (colon)
1716  {
1717  int typelen = colon - data.buffer();
1719  type.strncpy(data.buffer(), typelen);
1720  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
1721 
1722  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
1723  }
1724  }
1725  else v.reset();
1726  }
1727 
1728  static void saveData(std::ostream &os, int64 v)
1729  { UTwrite(os, &v); }
1730  static void saveData(std::ostream &os, bool v)
1731  { int64 iv = v; UTwrite(os, &iv); }
1732  static void saveData(std::ostream &os, fpreal64 v)
1733  { UTwrite<fpreal64>(os, &v); }
1734  static void saveData(std::ostream &os, UT_Vector2D v)
1735  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
1736  static void saveData(std::ostream &os, UT_Vector3D v)
1737  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1738  UTwrite<fpreal64>(os, &v.z()); }
1739  static void saveData(std::ostream &os, UT_Vector4D v)
1740  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1741  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
1742  static void saveData(std::ostream &os, UT_Matrix2D v)
1744  static void saveData(std::ostream &os, UT_Matrix3D v)
1746  static void saveData(std::ostream &os, UT_Matrix4D v)
1748  static void saveData(std::ostream &os, UT_StringHolder s)
1749  { UT_StringWrap(s).saveBinary(os); }
1750  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
1752  UT_OStringStream ostr;
1753  if (s) s->save(ostr);
1754  result = ostr.str();
1755  saveData(os, result);
1756  }
1757  static void saveData(std::ostream &os, PRM_DataItemHandle s)
1759  UT_OStringStream ostr;
1760  if (s)
1761  {
1762  ostr << s->getDataTypeToken();
1763  ostr << ":";
1764  s->saveBinary(ostr);
1765  }
1766  result = ostr.str();
1767  saveData(os, result);
1768  }
1769 
1770 
1771  void save(std::ostream &os) const
1772  {
1773  int32 v = version();
1774  UTwrite(os, &v);
1775  saveData(os, myRecordstrokes);
1776  saveData(os, myStashnode);
1777  saveData(os, myGroup);
1778  saveData(os, myGrouptype);
1779  saveData(os, myUsemask);
1780  saveData(os, myMirror);
1781  saveData(os, myMirrorgroup);
1782  saveData(os, myMirrororigin);
1783  saveData(os, myMirrordir);
1784  saveData(os, myTool);
1785  saveData(os, myRaybias);
1786  saveData(os, myStrandmode);
1787  saveData(os, myCollidewithskin);
1788  saveData(os, myBrushsurface);
1789  saveData(os, myUsepartinglines);
1790  saveData(os, myScreenradius);
1791  saveData(os, myObjectradius);
1792  saveData(os, mySoft);
1793  saveData(os, mySpacing);
1794  saveData(os, myDensity);
1795  saveData(os, myBrushmaintainlength);
1796  saveData(os, myBrushsnaptosurface);
1797  saveData(os, myBrushbend);
1798  saveData(os, myBrushbendfalloff);
1799  saveData(os, myLiftmode);
1800  saveData(os, myLiftangle);
1801  saveData(os, myAdjustlengthmode);
1802  saveData(os, myAdjustlengthvalue);
1803  saveData(os, myAdjustlengthlength);
1804  saveData(os, myAdjustlengthmethod);
1805  saveData(os, myMoverotatewithskin);
1806  saveData(os, mySculptdoconstrain);
1807  saveData(os, mySculptlockroot);
1808  saveData(os, mySmoothtargetsmoothness);
1809  saveData(os, myBlurinskinspace);
1810  saveData(os, myBlurperpoint);
1811  saveData(os, myClumpperpoint);
1812  saveData(os, myPlantmode);
1813  saveData(os, myPlantinterpolateguides);
1814  saveData(os, myPlantinterpolaterelskin);
1815  saveData(os, myPlantlength);
1816  saveData(os, myPlantsegcount);
1817  saveData(os, myDrawonskin);
1818  saveData(os, myDrawcurvetype);
1819  saveData(os, myDrawsegmode);
1820  saveData(os, myDrawsegcount);
1821  saveData(os, myDrawseglength);
1822  saveData(os, myEditactiveprim);
1823  saveData(os, myEditsoft);
1824  saveData(os, myEditsoftmode);
1825  saveData(os, myEditcurvefrac);
1826  saveData(os, myEditcurvedist);
1827  saveData(os, myResamplesegmode);
1828  saveData(os, myResamplesegcount);
1829  saveData(os, myResampleseglength);
1830  saveData(os, myTwistangle);
1831  saveData(os, myCurvemaskramp);
1832  saveData(os, myGroom);
1833  saveData(os, myStrands);
1834  saveData(os, myStrokes);
1835  saveData(os, myPreviewutil);
1836  saveData(os, myPaintmaskpoints);
1837  saveData(os, myGroupnewprims);
1838  saveData(os, myNamenewprims);
1839  saveData(os, myActivegroup);
1840  saveData(os, myNameattrib);
1841  saveData(os, myActivename);
1842  saveData(os, myColorbyname);
1843  saveData(os, myColorseed);
1844  saveData(os, myXord);
1845  saveData(os, myRord);
1846  saveData(os, myT);
1847  saveData(os, myR);
1848  saveData(os, myS);
1849  saveData(os, myShear);
1850  saveData(os, myScale);
1851  saveData(os, myP);
1852  saveData(os, myPr);
1853  saveData(os, myCamxform0);
1854  saveData(os, myCamxform1);
1855  saveData(os, myCamxform2);
1856  saveData(os, myCamxform3);
1857  saveData(os, myCampos);
1858  saveData(os, myCursorpos);
1859  saveData(os, myCursordisplace);
1860  saveData(os, myRaypos);
1861  saveData(os, myRaydir);
1862  saveData(os, myStrengthscale);
1863  saveData(os, myButton);
1864  saveData(os, myShiftkey);
1865  saveData(os, myCtrlkey);
1866 
1867  }
1868 
1869  bool load(UT_IStream &is)
1870  {
1871  int32 v;
1872  is.bread(&v, 1);
1873  if (version() != v)
1874  {
1875  // Fail incompatible versions
1876  return false;
1877  }
1878  loadData(is, myRecordstrokes);
1879  loadData(is, myStashnode);
1880  loadData(is, myGroup);
1881  loadData(is, myGrouptype);
1882  loadData(is, myUsemask);
1883  loadData(is, myMirror);
1884  loadData(is, myMirrorgroup);
1885  loadData(is, myMirrororigin);
1886  loadData(is, myMirrordir);
1887  loadData(is, myTool);
1888  loadData(is, myRaybias);
1889  loadData(is, myStrandmode);
1890  loadData(is, myCollidewithskin);
1891  loadData(is, myBrushsurface);
1892  loadData(is, myUsepartinglines);
1893  loadData(is, myScreenradius);
1894  loadData(is, myObjectradius);
1895  loadData(is, mySoft);
1896  loadData(is, mySpacing);
1897  loadData(is, myDensity);
1898  loadData(is, myBrushmaintainlength);
1899  loadData(is, myBrushsnaptosurface);
1900  loadData(is, myBrushbend);
1901  loadData(is, myBrushbendfalloff);
1902  loadData(is, myLiftmode);
1903  loadData(is, myLiftangle);
1904  loadData(is, myAdjustlengthmode);
1905  loadData(is, myAdjustlengthvalue);
1906  loadData(is, myAdjustlengthlength);
1907  loadData(is, myAdjustlengthmethod);
1908  loadData(is, myMoverotatewithskin);
1909  loadData(is, mySculptdoconstrain);
1910  loadData(is, mySculptlockroot);
1911  loadData(is, mySmoothtargetsmoothness);
1912  loadData(is, myBlurinskinspace);
1913  loadData(is, myBlurperpoint);
1914  loadData(is, myClumpperpoint);
1915  loadData(is, myPlantmode);
1916  loadData(is, myPlantinterpolateguides);
1917  loadData(is, myPlantinterpolaterelskin);
1918  loadData(is, myPlantlength);
1919  loadData(is, myPlantsegcount);
1920  loadData(is, myDrawonskin);
1921  loadData(is, myDrawcurvetype);
1922  loadData(is, myDrawsegmode);
1923  loadData(is, myDrawsegcount);
1924  loadData(is, myDrawseglength);
1925  loadData(is, myEditactiveprim);
1926  loadData(is, myEditsoft);
1927  loadData(is, myEditsoftmode);
1928  loadData(is, myEditcurvefrac);
1929  loadData(is, myEditcurvedist);
1930  loadData(is, myResamplesegmode);
1931  loadData(is, myResamplesegcount);
1932  loadData(is, myResampleseglength);
1933  loadData(is, myTwistangle);
1934  loadData(is, myCurvemaskramp);
1935  loadData(is, myGroom);
1936  loadData(is, myStrands);
1937  loadData(is, myStrokes);
1938  loadData(is, myPreviewutil);
1939  loadData(is, myPaintmaskpoints);
1940  loadData(is, myGroupnewprims);
1941  loadData(is, myNamenewprims);
1942  loadData(is, myActivegroup);
1943  loadData(is, myNameattrib);
1944  loadData(is, myActivename);
1945  loadData(is, myColorbyname);
1946  loadData(is, myColorseed);
1947  loadData(is, myXord);
1948  loadData(is, myRord);
1949  loadData(is, myT);
1950  loadData(is, myR);
1951  loadData(is, myS);
1952  loadData(is, myShear);
1953  loadData(is, myScale);
1954  loadData(is, myP);
1955  loadData(is, myPr);
1956  loadData(is, myCamxform0);
1957  loadData(is, myCamxform1);
1958  loadData(is, myCamxform2);
1959  loadData(is, myCamxform3);
1960  loadData(is, myCampos);
1961  loadData(is, myCursorpos);
1962  loadData(is, myCursordisplace);
1963  loadData(is, myRaypos);
1964  loadData(is, myRaydir);
1965  loadData(is, myStrengthscale);
1966  loadData(is, myButton);
1967  loadData(is, myShiftkey);
1968  loadData(is, myCtrlkey);
1969 
1970  return true;
1971  }
1972 
1973  bool getRecordstrokes() const { return myRecordstrokes; }
1974  void setRecordstrokes(bool val) { myRecordstrokes = val; }
1975  bool opRecordstrokes(const SOP_NodeVerb::CookParms &cookparms) const
1976  {
1977  SOP_Node *thissop = cookparms.getNode();
1978  if (!thissop) return getRecordstrokes();
1979  bool result;
1980  OP_Utils::evalOpParm(result, thissop, "recordstrokes", cookparms.getCookTime(), 0);
1981  return result;
1982  }
1983  const UT_StringHolder & getStashnode() const { return myStashnode; }
1984  void setStashnode(const UT_StringHolder & val) { myStashnode = val; }
1986  {
1987  SOP_Node *thissop = cookparms.getNode();
1988  if (!thissop) return getStashnode();
1990  OP_Utils::evalOpParm(result, thissop, "stashnode", cookparms.getCookTime(), 0);
1991  return result;
1992  }
1993  const UT_StringHolder & getGroup() const { return myGroup; }
1994  void setGroup(const UT_StringHolder & val) { myGroup = val; }
1996  {
1997  SOP_Node *thissop = cookparms.getNode();
1998  if (!thissop) return getGroup();
2000  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
2001  return result;
2002  }
2003  Grouptype getGrouptype() const { return Grouptype(myGrouptype); }
2004  void setGrouptype(Grouptype val) { myGrouptype = int64(val); }
2006  {
2007  SOP_Node *thissop = cookparms.getNode();
2008  if (!thissop) return getGrouptype();
2009  int64 result;
2010  OP_Utils::evalOpParm(result, thissop, "grouptype", cookparms.getCookTime(), 0);
2011  return Grouptype(result);
2012  }
2013  bool getUsemask() const { return myUsemask; }
2014  void setUsemask(bool val) { myUsemask = val; }
2015  bool opUsemask(const SOP_NodeVerb::CookParms &cookparms) const
2016  {
2017  SOP_Node *thissop = cookparms.getNode();
2018  if (!thissop) return getUsemask();
2019  bool result;
2020  OP_Utils::evalOpParm(result, thissop, "usemask", cookparms.getCookTime(), 0);
2021  return result;
2022  }
2023  bool getMirror() const { return myMirror; }
2024  void setMirror(bool val) { myMirror = val; }
2025  bool opMirror(const SOP_NodeVerb::CookParms &cookparms) const
2026  {
2027  SOP_Node *thissop = cookparms.getNode();
2028  if (!thissop) return getMirror();
2029  bool result;
2030  OP_Utils::evalOpParm(result, thissop, "mirror", cookparms.getCookTime(), 0);
2031  return result;
2032  }
2033  const UT_StringHolder & getMirrorgroup() const { return myMirrorgroup; }
2034  void setMirrorgroup(const UT_StringHolder & val) { myMirrorgroup = val; }
2036  {
2037  SOP_Node *thissop = cookparms.getNode();
2038  if (!thissop) return getMirrorgroup();
2040  OP_Utils::evalOpParm(result, thissop, "mirrorgroup", cookparms.getCookTime(), 0);
2041  return result;
2042  }
2043  UT_Vector3D getMirrororigin() const { return myMirrororigin; }
2044  void setMirrororigin(UT_Vector3D val) { myMirrororigin = val; }
2046  {
2047  SOP_Node *thissop = cookparms.getNode();
2048  if (!thissop) return getMirrororigin();
2050  OP_Utils::evalOpParm(result, thissop, "mirrororigin", cookparms.getCookTime(), 0);
2051  return result;
2052  }
2053  UT_Vector3D getMirrordir() const { return myMirrordir; }
2054  void setMirrordir(UT_Vector3D val) { myMirrordir = val; }
2056  {
2057  SOP_Node *thissop = cookparms.getNode();
2058  if (!thissop) return getMirrordir();
2060  OP_Utils::evalOpParm(result, thissop, "mirrordir", cookparms.getCookTime(), 0);
2061  return result;
2062  }
2063  Tool getTool() const { return Tool(myTool); }
2064  void setTool(Tool val) { myTool = int64(val); }
2065  Tool opTool(const SOP_NodeVerb::CookParms &cookparms) const
2066  {
2067  SOP_Node *thissop = cookparms.getNode();
2068  if (!thissop) return getTool();
2069  int64 result;
2070  OP_Utils::evalOpParm(result, thissop, "tool", cookparms.getCookTime(), 0);
2071  return Tool(result);
2072  }
2073  fpreal64 getRaybias() const { return myRaybias; }
2074  void setRaybias(fpreal64 val) { myRaybias = val; }
2076  {
2077  SOP_Node *thissop = cookparms.getNode();
2078  if (!thissop) return getRaybias();
2079  fpreal64 result;
2080  OP_Utils::evalOpParm(result, thissop, "raybias", cookparms.getCookTime(), 0);
2081  return result;
2082  }
2083  bool getStrandmode() const { return myStrandmode; }
2084  void setStrandmode(bool val) { myStrandmode = val; }
2085  bool opStrandmode(const SOP_NodeVerb::CookParms &cookparms) const
2086  {
2087  SOP_Node *thissop = cookparms.getNode();
2088  if (!thissop) return getStrandmode();
2089  bool result;
2090  OP_Utils::evalOpParm(result, thissop, "strandmode", cookparms.getCookTime(), 0);
2091  return result;
2092  }
2093  bool getCollidewithskin() const { return myCollidewithskin; }
2094  void setCollidewithskin(bool val) { myCollidewithskin = val; }
2095  bool opCollidewithskin(const SOP_NodeVerb::CookParms &cookparms) const
2096  {
2097  SOP_Node *thissop = cookparms.getNode();
2098  if (!thissop) return getCollidewithskin();
2099  bool result;
2100  OP_Utils::evalOpParm(result, thissop, "collidewithskin", cookparms.getCookTime(), 0);
2101  return result;
2102  }
2103  bool getBrushsurface() const { return myBrushsurface; }
2104  void setBrushsurface(bool val) { myBrushsurface = val; }
2105  bool opBrushsurface(const SOP_NodeVerb::CookParms &cookparms) const
2106  {
2107  SOP_Node *thissop = cookparms.getNode();
2108  if (!thissop) return getBrushsurface();
2109  bool result;
2110  OP_Utils::evalOpParm(result, thissop, "brushsurface", cookparms.getCookTime(), 0);
2111  return result;
2112  }
2113  bool getUsepartinglines() const { return myUsepartinglines; }
2114  void setUsepartinglines(bool val) { myUsepartinglines = val; }
2115  bool opUsepartinglines(const SOP_NodeVerb::CookParms &cookparms) const
2116  {
2117  SOP_Node *thissop = cookparms.getNode();
2118  if (!thissop) return getUsepartinglines();
2119  bool result;
2120  OP_Utils::evalOpParm(result, thissop, "usepartinglines", cookparms.getCookTime(), 0);
2121  return result;
2122  }
2123  fpreal64 getScreenradius() const { return myScreenradius; }
2124  void setScreenradius(fpreal64 val) { myScreenradius = val; }
2126  {
2127  SOP_Node *thissop = cookparms.getNode();
2128  if (!thissop) return getScreenradius();
2129  fpreal64 result;
2130  OP_Utils::evalOpParm(result, thissop, "screenradius", cookparms.getCookTime(), 0);
2131  return result;
2132  }
2133  fpreal64 getObjectradius() const { return myObjectradius; }
2134  void setObjectradius(fpreal64 val) { myObjectradius = val; }
2136  {
2137  SOP_Node *thissop = cookparms.getNode();
2138  if (!thissop) return getObjectradius();
2139  fpreal64 result;
2140  OP_Utils::evalOpParm(result, thissop, "objectradius", cookparms.getCookTime(), 0);
2141  return result;
2142  }
2143  fpreal64 getSoft() const { return mySoft; }
2144  void setSoft(fpreal64 val) { mySoft = val; }
2145  fpreal64 opSoft(const SOP_NodeVerb::CookParms &cookparms) const
2146  {
2147  SOP_Node *thissop = cookparms.getNode();
2148  if (!thissop) return getSoft();
2149  fpreal64 result;
2150  OP_Utils::evalOpParm(result, thissop, "soft", cookparms.getCookTime(), 0);
2151  return result;
2152  }
2153  fpreal64 getSpacing() const { return mySpacing; }
2154  void setSpacing(fpreal64 val) { mySpacing = val; }
2156  {
2157  SOP_Node *thissop = cookparms.getNode();
2158  if (!thissop) return getSpacing();
2159  fpreal64 result;
2160  OP_Utils::evalOpParm(result, thissop, "spacing", cookparms.getCookTime(), 0);
2161  return result;
2162  }
2163  fpreal64 getDensity() const { return myDensity; }
2164  void setDensity(fpreal64 val) { myDensity = val; }
2166  {
2167  SOP_Node *thissop = cookparms.getNode();
2168  if (!thissop) return getDensity();
2169  fpreal64 result;
2170  OP_Utils::evalOpParm(result, thissop, "density", cookparms.getCookTime(), 0);
2171  return result;
2172  }
2173  fpreal64 getBrushmaintainlength() const { return myBrushmaintainlength; }
2174  void setBrushmaintainlength(fpreal64 val) { myBrushmaintainlength = val; }
2176  {
2177  SOP_Node *thissop = cookparms.getNode();
2178  if (!thissop) return getBrushmaintainlength();
2179  fpreal64 result;
2180  OP_Utils::evalOpParm(result, thissop, "brushmaintainlength", cookparms.getCookTime(), 0);
2181  return result;
2182  }
2183  bool getBrushsnaptosurface() const { return myBrushsnaptosurface; }
2184  void setBrushsnaptosurface(bool val) { myBrushsnaptosurface = val; }
2185  bool opBrushsnaptosurface(const SOP_NodeVerb::CookParms &cookparms) const
2186  {
2187  SOP_Node *thissop = cookparms.getNode();
2188  if (!thissop) return getBrushsnaptosurface();
2189  bool result;
2190  OP_Utils::evalOpParm(result, thissop, "brushsnaptosurface", cookparms.getCookTime(), 0);
2191  return result;
2192  }
2193  fpreal64 getBrushbend() const { return myBrushbend; }
2194  void setBrushbend(fpreal64 val) { myBrushbend = val; }
2196  {
2197  SOP_Node *thissop = cookparms.getNode();
2198  if (!thissop) return getBrushbend();
2199  fpreal64 result;
2200  OP_Utils::evalOpParm(result, thissop, "brushbend", cookparms.getCookTime(), 0);
2201  return result;
2202  }
2203  fpreal64 getBrushbendfalloff() const { return myBrushbendfalloff; }
2204  void setBrushbendfalloff(fpreal64 val) { myBrushbendfalloff = val; }
2206  {
2207  SOP_Node *thissop = cookparms.getNode();
2208  if (!thissop) return getBrushbendfalloff();
2209  fpreal64 result;
2210  OP_Utils::evalOpParm(result, thissop, "brushbendfalloff", cookparms.getCookTime(), 0);
2211  return result;
2212  }
2213  Liftmode getLiftmode() const { return Liftmode(myLiftmode); }
2214  void setLiftmode(Liftmode val) { myLiftmode = int64(val); }
2216  {
2217  SOP_Node *thissop = cookparms.getNode();
2218  if (!thissop) return getLiftmode();
2219  int64 result;
2220  OP_Utils::evalOpParm(result, thissop, "liftmode", cookparms.getCookTime(), 0);
2221  return Liftmode(result);
2222  }
2223  fpreal64 getLiftangle() const { return myLiftangle; }
2224  void setLiftangle(fpreal64 val) { myLiftangle = val; }
2226  {
2227  SOP_Node *thissop = cookparms.getNode();
2228  if (!thissop) return getLiftangle();
2229  fpreal64 result;
2230  OP_Utils::evalOpParm(result, thissop, "liftangle", cookparms.getCookTime(), 0);
2231  return result;
2232  }
2233  Adjustlengthmode getAdjustlengthmode() const { return Adjustlengthmode(myAdjustlengthmode); }
2234  void setAdjustlengthmode(Adjustlengthmode val) { myAdjustlengthmode = int64(val); }
2236  {
2237  SOP_Node *thissop = cookparms.getNode();
2238  if (!thissop) return getAdjustlengthmode();
2239  int64 result;
2240  OP_Utils::evalOpParm(result, thissop, "adjustlengthmode", cookparms.getCookTime(), 0);
2241  return Adjustlengthmode(result);
2242  }
2243  fpreal64 getAdjustlengthvalue() const { return myAdjustlengthvalue; }
2244  void setAdjustlengthvalue(fpreal64 val) { myAdjustlengthvalue = val; }
2246  {
2247  SOP_Node *thissop = cookparms.getNode();
2248  if (!thissop) return getAdjustlengthvalue();
2249  fpreal64 result;
2250  OP_Utils::evalOpParm(result, thissop, "adjustlengthvalue", cookparms.getCookTime(), 0);
2251  return result;
2252  }
2253  fpreal64 getAdjustlengthlength() const { return myAdjustlengthlength; }
2254  void setAdjustlengthlength(fpreal64 val) { myAdjustlengthlength = val; }
2256  {
2257  SOP_Node *thissop = cookparms.getNode();
2258  if (!thissop) return getAdjustlengthlength();
2259  fpreal64 result;
2260  OP_Utils::evalOpParm(result, thissop, "adjustlengthlength", cookparms.getCookTime(), 0);
2261  return result;
2262  }
2263  Adjustlengthmethod getAdjustlengthmethod() const { return Adjustlengthmethod(myAdjustlengthmethod); }
2264  void setAdjustlengthmethod(Adjustlengthmethod val) { myAdjustlengthmethod = int64(val); }
2266  {
2267  SOP_Node *thissop = cookparms.getNode();
2268  if (!thissop) return getAdjustlengthmethod();
2269  int64 result;
2270  OP_Utils::evalOpParm(result, thissop, "adjustlengthmethod", cookparms.getCookTime(), 0);
2271  return Adjustlengthmethod(result);
2272  }
2273  bool getMoverotatewithskin() const { return myMoverotatewithskin; }
2274  void setMoverotatewithskin(bool val) { myMoverotatewithskin = val; }
2275  bool opMoverotatewithskin(const SOP_NodeVerb::CookParms &cookparms) const
2276  {
2277  SOP_Node *thissop = cookparms.getNode();
2278  if (!thissop) return getMoverotatewithskin();
2279  bool result;
2280  OP_Utils::evalOpParm(result, thissop, "moverotatewithskin", cookparms.getCookTime(), 0);
2281  return result;
2282  }
2283  bool getSculptdoconstrain() const { return mySculptdoconstrain; }
2284  void setSculptdoconstrain(bool val) { mySculptdoconstrain = val; }
2285  bool opSculptdoconstrain(const SOP_NodeVerb::CookParms &cookparms) const
2286  {
2287  SOP_Node *thissop = cookparms.getNode();
2288  if (!thissop) return getSculptdoconstrain();
2289  bool result;
2290  OP_Utils::evalOpParm(result, thissop, "sculptdoconstrain", cookparms.getCookTime(), 0);
2291  return result;
2292  }
2293  bool getSculptlockroot() const { return mySculptlockroot; }
2294  void setSculptlockroot(bool val) { mySculptlockroot = val; }
2295  bool opSculptlockroot(const SOP_NodeVerb::CookParms &cookparms) const
2296  {
2297  SOP_Node *thissop = cookparms.getNode();
2298  if (!thissop) return getSculptlockroot();
2299  bool result;
2300  OP_Utils::evalOpParm(result, thissop, "sculptlockroot", cookparms.getCookTime(), 0);
2301  return result;
2302  }
2303  fpreal64 getSmoothtargetsmoothness() const { return mySmoothtargetsmoothness; }
2304  void setSmoothtargetsmoothness(fpreal64 val) { mySmoothtargetsmoothness = val; }
2306  {
2307  SOP_Node *thissop = cookparms.getNode();
2308  if (!thissop) return getSmoothtargetsmoothness();
2309  fpreal64 result;
2310  OP_Utils::evalOpParm(result, thissop, "smoothtargetsmoothness", cookparms.getCookTime(), 0);
2311  return result;
2312  }
2313  bool getBlurinskinspace() const { return myBlurinskinspace; }
2314  void setBlurinskinspace(bool val) { myBlurinskinspace = val; }
2315  bool opBlurinskinspace(const SOP_NodeVerb::CookParms &cookparms) const
2316  {
2317  SOP_Node *thissop = cookparms.getNode();
2318  if (!thissop) return getBlurinskinspace();
2319  bool result;
2320  OP_Utils::evalOpParm(result, thissop, "blurinskinspace", cookparms.getCookTime(), 0);
2321  return result;
2322  }
2323  bool getBlurperpoint() const { return myBlurperpoint; }
2324  void setBlurperpoint(bool val) { myBlurperpoint = val; }
2325  bool opBlurperpoint(const SOP_NodeVerb::CookParms &cookparms) const
2326  {
2327  SOP_Node *thissop = cookparms.getNode();
2328  if (!thissop) return getBlurperpoint();
2329  bool result;
2330  OP_Utils::evalOpParm(result, thissop, "blurperpoint", cookparms.getCookTime(), 0);
2331  return result;
2332  }
2333  bool getClumpperpoint() const { return myClumpperpoint; }
2334  void setClumpperpoint(bool val) { myClumpperpoint = val; }
2335  bool opClumpperpoint(const SOP_NodeVerb::CookParms &cookparms) const
2336  {
2337  SOP_Node *thissop = cookparms.getNode();
2338  if (!thissop) return getClumpperpoint();
2339  bool result;
2340  OP_Utils::evalOpParm(result, thissop, "clumpperpoint", cookparms.getCookTime(), 0);
2341  return result;
2342  }
2343  Plantmode getPlantmode() const { return Plantmode(myPlantmode); }
2344  void setPlantmode(Plantmode val) { myPlantmode = int64(val); }
2346  {
2347  SOP_Node *thissop = cookparms.getNode();
2348  if (!thissop) return getPlantmode();
2349  int64 result;
2350  OP_Utils::evalOpParm(result, thissop, "plantmode", cookparms.getCookTime(), 0);
2351  return Plantmode(result);
2352  }
2353  bool getPlantinterpolateguides() const { return myPlantinterpolateguides; }
2354  void setPlantinterpolateguides(bool val) { myPlantinterpolateguides = val; }
2356  {
2357  SOP_Node *thissop = cookparms.getNode();
2358  if (!thissop) return getPlantinterpolateguides();
2359  bool result;
2360  OP_Utils::evalOpParm(result, thissop, "plantinterpolateguides", cookparms.getCookTime(), 0);
2361  return result;
2362  }
2363  bool getPlantinterpolaterelskin() const { return myPlantinterpolaterelskin; }
2364  void setPlantinterpolaterelskin(bool val) { myPlantinterpolaterelskin = val; }
2366  {
2367  SOP_Node *thissop = cookparms.getNode();
2368  if (!thissop) return getPlantinterpolaterelskin();
2369  bool result;
2370  OP_Utils::evalOpParm(result, thissop, "plantinterpolaterelskin", cookparms.getCookTime(), 0);
2371  return result;
2372  }
2373  fpreal64 getPlantlength() const { return myPlantlength; }
2374  void setPlantlength(fpreal64 val) { myPlantlength = val; }
2376  {
2377  SOP_Node *thissop = cookparms.getNode();
2378  if (!thissop) return getPlantlength();
2379  fpreal64 result;
2380  OP_Utils::evalOpParm(result, thissop, "plantlength", cookparms.getCookTime(), 0);
2381  return result;
2382  }
2383  int64 getPlantsegcount() const { return myPlantsegcount; }
2384  void setPlantsegcount(int64 val) { myPlantsegcount = val; }
2386  {
2387  SOP_Node *thissop = cookparms.getNode();
2388  if (!thissop) return getPlantsegcount();
2389  int64 result;
2390  OP_Utils::evalOpParm(result, thissop, "plantsegcount", cookparms.getCookTime(), 0);
2391  return result;
2392  }
2393  bool getDrawonskin() const { return myDrawonskin; }
2394  void setDrawonskin(bool val) { myDrawonskin = val; }
2395  bool opDrawonskin(const SOP_NodeVerb::CookParms &cookparms) const
2396  {
2397  SOP_Node *thissop = cookparms.getNode();
2398  if (!thissop) return getDrawonskin();
2399  bool result;
2400  OP_Utils::evalOpParm(result, thissop, "drawonskin", cookparms.getCookTime(), 0);
2401  return result;
2402  }
2403  Drawcurvetype getDrawcurvetype() const { return Drawcurvetype(myDrawcurvetype); }
2404  void setDrawcurvetype(Drawcurvetype val) { myDrawcurvetype = int64(val); }
2406  {
2407  SOP_Node *thissop = cookparms.getNode();
2408  if (!thissop) return getDrawcurvetype();
2409  int64 result;
2410  OP_Utils::evalOpParm(result, thissop, "drawcurvetype", cookparms.getCookTime(), 0);
2411  return Drawcurvetype(result);
2412  }
2413  Drawsegmode getDrawsegmode() const { return Drawsegmode(myDrawsegmode); }
2414  void setDrawsegmode(Drawsegmode val) { myDrawsegmode = int64(val); }
2416  {
2417  SOP_Node *thissop = cookparms.getNode();
2418  if (!thissop) return getDrawsegmode();
2419  int64 result;
2420  OP_Utils::evalOpParm(result, thissop, "drawsegmode", cookparms.getCookTime(), 0);
2421  return Drawsegmode(result);
2422  }
2423  int64 getDrawsegcount() const { return myDrawsegcount; }
2424  void setDrawsegcount(int64 val) { myDrawsegcount = val; }
2426  {
2427  SOP_Node *thissop = cookparms.getNode();
2428  if (!thissop) return getDrawsegcount();
2429  int64 result;
2430  OP_Utils::evalOpParm(result, thissop, "drawsegcount", cookparms.getCookTime(), 0);
2431  return result;
2432  }
2433  fpreal64 getDrawseglength() const { return myDrawseglength; }
2434  void setDrawseglength(fpreal64 val) { myDrawseglength = val; }
2436  {
2437  SOP_Node *thissop = cookparms.getNode();
2438  if (!thissop) return getDrawseglength();
2439  fpreal64 result;
2440  OP_Utils::evalOpParm(result, thissop, "drawseglength", cookparms.getCookTime(), 0);
2441  return result;
2442  }
2443  int64 getEditactiveprim() const { return myEditactiveprim; }
2444  void setEditactiveprim(int64 val) { myEditactiveprim = val; }
2446  {
2447  SOP_Node *thissop = cookparms.getNode();
2448  if (!thissop) return getEditactiveprim();
2449  int64 result;
2450  OP_Utils::evalOpParm(result, thissop, "editactiveprim", cookparms.getCookTime(), 0);
2451  return result;
2452  }
2453  bool getEditsoft() const { return myEditsoft; }
2454  void setEditsoft(bool val) { myEditsoft = val; }
2455  bool opEditsoft(const SOP_NodeVerb::CookParms &cookparms) const
2456  {
2457  SOP_Node *thissop = cookparms.getNode();
2458  if (!thissop) return getEditsoft();
2459  bool result;
2460  OP_Utils::evalOpParm(result, thissop, "editsoft", cookparms.getCookTime(), 0);
2461  return result;
2462  }
2463  Editsoftmode getEditsoftmode() const { return Editsoftmode(myEditsoftmode); }
2464  void setEditsoftmode(Editsoftmode val) { myEditsoftmode = int64(val); }
2466  {
2467  SOP_Node *thissop = cookparms.getNode();
2468  if (!thissop) return getEditsoftmode();
2469  int64 result;
2470  OP_Utils::evalOpParm(result, thissop, "editsoftmode", cookparms.getCookTime(), 0);
2471  return Editsoftmode(result);
2472  }
2473  fpreal64 getEditcurvefrac() const { return myEditcurvefrac; }
2474  void setEditcurvefrac(fpreal64 val) { myEditcurvefrac = val; }
2476  {
2477  SOP_Node *thissop = cookparms.getNode();
2478  if (!thissop) return getEditcurvefrac();
2479  fpreal64 result;
2480  OP_Utils::evalOpParm(result, thissop, "editcurvefrac", cookparms.getCookTime(), 0);
2481  return result;
2482  }
2483  fpreal64 getEditcurvedist() const { return myEditcurvedist; }
2484  void setEditcurvedist(fpreal64 val) { myEditcurvedist = val; }
2486  {
2487  SOP_Node *thissop = cookparms.getNode();
2488  if (!thissop) return getEditcurvedist();
2489  fpreal64 result;
2490  OP_Utils::evalOpParm(result, thissop, "editcurvedist", cookparms.getCookTime(), 0);
2491  return result;
2492  }
2493  Resamplesegmode getResamplesegmode() const { return Resamplesegmode(myResamplesegmode); }
2494  void setResamplesegmode(Resamplesegmode val) { myResamplesegmode = int64(val); }
2496  {
2497  SOP_Node *thissop = cookparms.getNode();
2498  if (!thissop) return getResamplesegmode();
2499  int64 result;
2500  OP_Utils::evalOpParm(result, thissop, "resamplesegmode", cookparms.getCookTime(), 0);
2501  return Resamplesegmode(result);
2502  }
2503  int64 getResamplesegcount() const { return myResamplesegcount; }
2504  void setResamplesegcount(int64 val) { myResamplesegcount = val; }
2506  {
2507  SOP_Node *thissop = cookparms.getNode();
2508  if (!thissop) return getResamplesegcount();
2509  int64 result;
2510  OP_Utils::evalOpParm(result, thissop, "resamplesegcount", cookparms.getCookTime(), 0);
2511  return result;
2512  }
2513  fpreal64 getResampleseglength() const { return myResampleseglength; }
2514  void setResampleseglength(fpreal64 val) { myResampleseglength = val; }
2516  {
2517  SOP_Node *thissop = cookparms.getNode();
2518  if (!thissop) return getResampleseglength();
2519  fpreal64 result;
2520  OP_Utils::evalOpParm(result, thissop, "resampleseglength", cookparms.getCookTime(), 0);
2521  return result;
2522  }
2523  fpreal64 getTwistangle() const { return myTwistangle; }
2524  void setTwistangle(fpreal64 val) { myTwistangle = val; }
2526  {
2527  SOP_Node *thissop = cookparms.getNode();
2528  if (!thissop) return getTwistangle();
2529  fpreal64 result;
2530  OP_Utils::evalOpParm(result, thissop, "twistangle", cookparms.getCookTime(), 0);
2531  return result;
2532  }
2533  UT_SharedPtr<UT_Ramp> getCurvemaskramp() const { return myCurvemaskramp; }
2534  void setCurvemaskramp(UT_SharedPtr<UT_Ramp> val) { myCurvemaskramp = val; }
2536  {
2537  SOP_Node *thissop = cookparms.getNode();
2538  if (!thissop) return getCurvemaskramp();
2540  OP_Utils::evalOpParm(result, thissop, "curvemaskramp", cookparms.getCookTime(), 0);
2541  return result;
2542  }
2543  PRM_DataItemHandle getGroom() const { return myGroom; }
2544  void setGroom(PRM_DataItemHandle val) { myGroom = val; }
2546  {
2547  SOP_Node *thissop = cookparms.getNode();
2548  if (!thissop) return getGroom();
2550  OP_Utils::evalOpParm(result, thissop, "groom", cookparms.getCookTime(), 0);
2551  return result;
2552  }
2553  PRM_DataItemHandle getStrands() const { return myStrands; }
2554  void setStrands(PRM_DataItemHandle val) { myStrands = val; }
2556  {
2557  SOP_Node *thissop = cookparms.getNode();
2558  if (!thissop) return getStrands();
2560  OP_Utils::evalOpParm(result, thissop, "strands", cookparms.getCookTime(), 0);
2561  return result;
2562  }
2563  PRM_DataItemHandle getStrokes() const { return myStrokes; }
2564  void setStrokes(PRM_DataItemHandle val) { myStrokes = val; }
2566  {
2567  SOP_Node *thissop = cookparms.getNode();
2568  if (!thissop) return getStrokes();
2570  OP_Utils::evalOpParm(result, thissop, "strokes", cookparms.getCookTime(), 0);
2571  return result;
2572  }
2573  bool getPreviewutil() const { return myPreviewutil; }
2574  void setPreviewutil(bool val) { myPreviewutil = val; }
2575  bool opPreviewutil(const SOP_NodeVerb::CookParms &cookparms) const
2576  {
2577  SOP_Node *thissop = cookparms.getNode();
2578  if (!thissop) return getPreviewutil();
2579  bool result;
2580  OP_Utils::evalOpParm(result, thissop, "previewutil", cookparms.getCookTime(), 0);
2581  return result;
2582  }
2583  bool getPaintmaskpoints() const { return myPaintmaskpoints; }
2584  void setPaintmaskpoints(bool val) { myPaintmaskpoints = val; }
2585  bool opPaintmaskpoints(const SOP_NodeVerb::CookParms &cookparms) const
2586  {
2587  SOP_Node *thissop = cookparms.getNode();
2588  if (!thissop) return getPaintmaskpoints();
2589  bool result;
2590  OP_Utils::evalOpParm(result, thissop, "paintmaskpoints", cookparms.getCookTime(), 0);
2591  return result;
2592  }
2593  bool getGroupnewprims() const { return myGroupnewprims; }
2594  void setGroupnewprims(bool val) { myGroupnewprims = val; }
2595  bool opGroupnewprims(const SOP_NodeVerb::CookParms &cookparms) const
2596  {
2597  SOP_Node *thissop = cookparms.getNode();
2598  if (!thissop) return getGroupnewprims();
2599  bool result;
2600  OP_Utils::evalOpParm(result, thissop, "groupnewprims", cookparms.getCookTime(), 0);
2601  return result;
2602  }
2603  bool getNamenewprims() const { return myNamenewprims; }
2604  void setNamenewprims(bool val) { myNamenewprims = val; }
2605  bool opNamenewprims(const SOP_NodeVerb::CookParms &cookparms) const
2606  {
2607  SOP_Node *thissop = cookparms.getNode();
2608  if (!thissop) return getNamenewprims();
2609  bool result;
2610  OP_Utils::evalOpParm(result, thissop, "namenewprims", cookparms.getCookTime(), 0);
2611  return result;
2612  }
2613  const UT_StringHolder & getActivegroup() const { return myActivegroup; }
2614  void setActivegroup(const UT_StringHolder & val) { myActivegroup = val; }
2616  {
2617  SOP_Node *thissop = cookparms.getNode();
2618  if (!thissop) return getActivegroup();
2620  OP_Utils::evalOpParm(result, thissop, "activegroup", cookparms.getCookTime(), 0);
2621  return result;
2622  }
2623  const UT_StringHolder & getNameattrib() const { return myNameattrib; }
2624  void setNameattrib(const UT_StringHolder & val) { myNameattrib = val; }
2626  {
2627  SOP_Node *thissop = cookparms.getNode();
2628  if (!thissop) return getNameattrib();
2630  OP_Utils::evalOpParm(result, thissop, "nameattrib", cookparms.getCookTime(), 0);
2631  return result;
2632  }
2633  const UT_StringHolder & getActivename() const { return myActivename; }
2634  void setActivename(const UT_StringHolder & val) { myActivename = val; }
2636  {
2637  SOP_Node *thissop = cookparms.getNode();
2638  if (!thissop) return getActivename();
2640  OP_Utils::evalOpParm(result, thissop, "activename", cookparms.getCookTime(), 0);
2641  return result;
2642  }
2643  bool getColorbyname() const { return myColorbyname; }
2644  void setColorbyname(bool val) { myColorbyname = val; }
2645  bool opColorbyname(const SOP_NodeVerb::CookParms &cookparms) const
2646  {
2647  SOP_Node *thissop = cookparms.getNode();
2648  if (!thissop) return getColorbyname();
2649  bool result;
2650  OP_Utils::evalOpParm(result, thissop, "colorbyname", cookparms.getCookTime(), 0);
2651  return result;
2652  }
2653  int64 getColorseed() const { return myColorseed; }
2654  void setColorseed(int64 val) { myColorseed = val; }
2656  {
2657  SOP_Node *thissop = cookparms.getNode();
2658  if (!thissop) return getColorseed();
2659  int64 result;
2660  OP_Utils::evalOpParm(result, thissop, "colorseed", cookparms.getCookTime(), 0);
2661  return result;
2662  }
2663  Xord getXord() const { return Xord(myXord); }
2664  void setXord(Xord val) { myXord = int64(val); }
2665  Xord opXord(const SOP_NodeVerb::CookParms &cookparms) const
2666  {
2667  SOP_Node *thissop = cookparms.getNode();
2668  if (!thissop) return getXord();
2669  int64 result;
2670  OP_Utils::evalOpParm(result, thissop, "xOrd", cookparms.getCookTime(), 0);
2671  return Xord(result);
2672  }
2673  Rord getRord() const { return Rord(myRord); }
2674  void setRord(Rord val) { myRord = int64(val); }
2675  Rord opRord(const SOP_NodeVerb::CookParms &cookparms) const
2676  {
2677  SOP_Node *thissop = cookparms.getNode();
2678  if (!thissop) return getRord();
2679  int64 result;
2680  OP_Utils::evalOpParm(result, thissop, "rOrd", cookparms.getCookTime(), 0);
2681  return Rord(result);
2682  }
2683  UT_Vector3D getT() const { return myT; }
2684  void setT(UT_Vector3D val) { myT = val; }
2685  UT_Vector3D opT(const SOP_NodeVerb::CookParms &cookparms) const
2686  {
2687  SOP_Node *thissop = cookparms.getNode();
2688  if (!thissop) return getT();
2690  OP_Utils::evalOpParm(result, thissop, "t", cookparms.getCookTime(), 0);
2691  return result;
2692  }
2693  UT_Vector3D getR() const { return myR; }
2694  void setR(UT_Vector3D val) { myR = val; }
2695  UT_Vector3D opR(const SOP_NodeVerb::CookParms &cookparms) const
2696  {
2697  SOP_Node *thissop = cookparms.getNode();
2698  if (!thissop) return getR();
2700  OP_Utils::evalOpParm(result, thissop, "r", cookparms.getCookTime(), 0);
2701  return result;
2702  }
2703  UT_Vector3D getS() const { return myS; }
2704  void setS(UT_Vector3D val) { myS = val; }
2705  UT_Vector3D opS(const SOP_NodeVerb::CookParms &cookparms) const
2706  {
2707  SOP_Node *thissop = cookparms.getNode();
2708  if (!thissop) return getS();
2710  OP_Utils::evalOpParm(result, thissop, "s", cookparms.getCookTime(), 0);
2711  return result;
2712  }
2713  UT_Vector3D getShear() const { return myShear; }
2714  void setShear(UT_Vector3D val) { myShear = val; }
2716  {
2717  SOP_Node *thissop = cookparms.getNode();
2718  if (!thissop) return getShear();
2720  OP_Utils::evalOpParm(result, thissop, "shear", cookparms.getCookTime(), 0);
2721  return result;
2722  }
2723  fpreal64 getScale() const { return myScale; }
2724  void setScale(fpreal64 val) { myScale = val; }
2725  fpreal64 opScale(const SOP_NodeVerb::CookParms &cookparms) const
2726  {
2727  SOP_Node *thissop = cookparms.getNode();
2728  if (!thissop) return getScale();
2729  fpreal64 result;
2730  OP_Utils::evalOpParm(result, thissop, "scale", cookparms.getCookTime(), 0);
2731  return result;
2732  }
2733  UT_Vector3D getP() const { return myP; }
2734  void setP(UT_Vector3D val) { myP = val; }
2735  UT_Vector3D opP(const SOP_NodeVerb::CookParms &cookparms) const
2736  {
2737  SOP_Node *thissop = cookparms.getNode();
2738  if (!thissop) return getP();
2740  OP_Utils::evalOpParm(result, thissop, "p", cookparms.getCookTime(), 0);
2741  return result;
2742  }
2743  UT_Vector3D getPr() const { return myPr; }
2744  void setPr(UT_Vector3D val) { myPr = val; }
2745  UT_Vector3D opPr(const SOP_NodeVerb::CookParms &cookparms) const
2746  {
2747  SOP_Node *thissop = cookparms.getNode();
2748  if (!thissop) return getPr();
2750  OP_Utils::evalOpParm(result, thissop, "pr", cookparms.getCookTime(), 0);
2751  return result;
2752  }
2753  UT_Vector4D getCamxform0() const { return myCamxform0; }
2754  void setCamxform0(UT_Vector4D val) { myCamxform0 = val; }
2756  {
2757  SOP_Node *thissop = cookparms.getNode();
2758  if (!thissop) return getCamxform0();
2760  OP_Utils::evalOpParm(result, thissop, "camxform0", cookparms.getCookTime(), 0);
2761  return result;
2762  }
2763  UT_Vector4D getCamxform1() const { return myCamxform1; }
2764  void setCamxform1(UT_Vector4D val) { myCamxform1 = val; }
2766  {
2767  SOP_Node *thissop = cookparms.getNode();
2768  if (!thissop) return getCamxform1();
2770  OP_Utils::evalOpParm(result, thissop, "camxform1", cookparms.getCookTime(), 0);
2771  return result;
2772  }
2773  UT_Vector4D getCamxform2() const { return myCamxform2; }
2774  void setCamxform2(UT_Vector4D val) { myCamxform2 = val; }
2776  {
2777  SOP_Node *thissop = cookparms.getNode();
2778  if (!thissop) return getCamxform2();
2780  OP_Utils::evalOpParm(result, thissop, "camxform2", cookparms.getCookTime(), 0);
2781  return result;
2782  }
2783  UT_Vector4D getCamxform3() const { return myCamxform3; }
2784  void setCamxform3(UT_Vector4D val) { myCamxform3 = val; }
2786  {
2787  SOP_Node *thissop = cookparms.getNode();
2788  if (!thissop) return getCamxform3();
2790  OP_Utils::evalOpParm(result, thissop, "camxform3", cookparms.getCookTime(), 0);
2791  return result;
2792  }
2793  UT_Vector3D getCampos() const { return myCampos; }
2794  void setCampos(UT_Vector3D val) { myCampos = val; }
2796  {
2797  SOP_Node *thissop = cookparms.getNode();
2798  if (!thissop) return getCampos();
2800  OP_Utils::evalOpParm(result, thissop, "campos", cookparms.getCookTime(), 0);
2801  return result;
2802  }
2803  UT_Vector2D getCursorpos() const { return myCursorpos; }
2804  void setCursorpos(UT_Vector2D val) { myCursorpos = val; }
2806  {
2807  SOP_Node *thissop = cookparms.getNode();
2808  if (!thissop) return getCursorpos();
2810  OP_Utils::evalOpParm(result, thissop, "cursorpos", cookparms.getCookTime(), 0);
2811  return result;
2812  }
2813  UT_Vector3D getCursordisplace() const { return myCursordisplace; }
2814  void setCursordisplace(UT_Vector3D val) { myCursordisplace = val; }
2816  {
2817  SOP_Node *thissop = cookparms.getNode();
2818  if (!thissop) return getCursordisplace();
2820  OP_Utils::evalOpParm(result, thissop, "cursordisplace", cookparms.getCookTime(), 0);
2821  return result;
2822  }
2823  UT_Vector3D getRaypos() const { return myRaypos; }
2824  void setRaypos(UT_Vector3D val) { myRaypos = val; }
2826  {
2827  SOP_Node *thissop = cookparms.getNode();
2828  if (!thissop) return getRaypos();
2830  OP_Utils::evalOpParm(result, thissop, "raypos", cookparms.getCookTime(), 0);
2831  return result;
2832  }
2833  UT_Vector3D getRaydir() const { return myRaydir; }
2834  void setRaydir(UT_Vector3D val) { myRaydir = val; }
2836  {
2837  SOP_Node *thissop = cookparms.getNode();
2838  if (!thissop) return getRaydir();
2840  OP_Utils::evalOpParm(result, thissop, "raydir", cookparms.getCookTime(), 0);
2841  return result;
2842  }
2843  fpreal64 getStrengthscale() const { return myStrengthscale; }
2844  void setStrengthscale(fpreal64 val) { myStrengthscale = val; }
2846  {
2847  SOP_Node *thissop = cookparms.getNode();
2848  if (!thissop) return getStrengthscale();
2849  fpreal64 result;
2850  OP_Utils::evalOpParm(result, thissop, "strengthscale", cookparms.getCookTime(), 0);
2851  return result;
2852  }
2853  Button getButton() const { return Button(myButton); }
2854  void setButton(Button val) { myButton = int64(val); }
2855  Button opButton(const SOP_NodeVerb::CookParms &cookparms) const
2856  {
2857  SOP_Node *thissop = cookparms.getNode();
2858  if (!thissop) return getButton();
2859  int64 result;
2860  OP_Utils::evalOpParm(result, thissop, "button", cookparms.getCookTime(), 0);
2861  return Button(result);
2862  }
2863  bool getShiftkey() const { return myShiftkey; }
2864  void setShiftkey(bool val) { myShiftkey = val; }
2865  bool opShiftkey(const SOP_NodeVerb::CookParms &cookparms) const
2866  {
2867  SOP_Node *thissop = cookparms.getNode();
2868  if (!thissop) return getShiftkey();
2869  bool result;
2870  OP_Utils::evalOpParm(result, thissop, "shiftkey", cookparms.getCookTime(), 0);
2871  return result;
2872  }
2873  bool getCtrlkey() const { return myCtrlkey; }
2874  void setCtrlkey(bool val) { myCtrlkey = val; }
2875  bool opCtrlkey(const SOP_NodeVerb::CookParms &cookparms) const
2876  {
2877  SOP_Node *thissop = cookparms.getNode();
2878  if (!thissop) return getCtrlkey();
2879  bool result;
2880  OP_Utils::evalOpParm(result, thissop, "ctrlkey", cookparms.getCookTime(), 0);
2881  return result;
2882  }
2883 
2884 private:
2885  bool myRecordstrokes;
2886  UT_StringHolder myStashnode;
2887  UT_StringHolder myGroup;
2888  int64 myGrouptype;
2889  bool myUsemask;
2890  bool myMirror;
2891  UT_StringHolder myMirrorgroup;
2892  UT_Vector3D myMirrororigin;
2893  UT_Vector3D myMirrordir;
2894  int64 myTool;
2895  fpreal64 myRaybias;
2896  bool myStrandmode;
2897  bool myCollidewithskin;
2898  bool myBrushsurface;
2899  bool myUsepartinglines;
2900  fpreal64 myScreenradius;
2901  fpreal64 myObjectradius;
2902  fpreal64 mySoft;
2903  fpreal64 mySpacing;
2904  fpreal64 myDensity;
2905  fpreal64 myBrushmaintainlength;
2906  bool myBrushsnaptosurface;
2907  fpreal64 myBrushbend;
2908  fpreal64 myBrushbendfalloff;
2909  int64 myLiftmode;
2910  fpreal64 myLiftangle;
2911  int64 myAdjustlengthmode;
2912  fpreal64 myAdjustlengthvalue;
2913  fpreal64 myAdjustlengthlength;
2914  int64 myAdjustlengthmethod;
2915  bool myMoverotatewithskin;
2916  bool mySculptdoconstrain;
2917  bool mySculptlockroot;
2918  fpreal64 mySmoothtargetsmoothness;
2919  bool myBlurinskinspace;
2920  bool myBlurperpoint;
2921  bool myClumpperpoint;
2922  int64 myPlantmode;
2923  bool myPlantinterpolateguides;
2924  bool myPlantinterpolaterelskin;
2925  fpreal64 myPlantlength;
2926  int64 myPlantsegcount;
2927  bool myDrawonskin;
2928  int64 myDrawcurvetype;
2929  int64 myDrawsegmode;
2930  int64 myDrawsegcount;
2931  fpreal64 myDrawseglength;
2932  int64 myEditactiveprim;
2933  bool myEditsoft;
2934  int64 myEditsoftmode;
2935  fpreal64 myEditcurvefrac;
2936  fpreal64 myEditcurvedist;
2937  int64 myResamplesegmode;
2938  int64 myResamplesegcount;
2939  fpreal64 myResampleseglength;
2940  fpreal64 myTwistangle;
2941  UT_SharedPtr<UT_Ramp> myCurvemaskramp;
2942  PRM_DataItemHandle myGroom;
2943  PRM_DataItemHandle myStrands;
2944  PRM_DataItemHandle myStrokes;
2945  bool myPreviewutil;
2946  bool myPaintmaskpoints;
2947  bool myGroupnewprims;
2948  bool myNamenewprims;
2949  UT_StringHolder myActivegroup;
2950  UT_StringHolder myNameattrib;
2951  UT_StringHolder myActivename;
2952  bool myColorbyname;
2953  int64 myColorseed;
2954  int64 myXord;
2955  int64 myRord;
2956  UT_Vector3D myT;
2957  UT_Vector3D myR;
2958  UT_Vector3D myS;
2959  UT_Vector3D myShear;
2960  fpreal64 myScale;
2961  UT_Vector3D myP;
2962  UT_Vector3D myPr;
2963  UT_Vector4D myCamxform0;
2964  UT_Vector4D myCamxform1;
2965  UT_Vector4D myCamxform2;
2966  UT_Vector4D myCamxform3;
2967  UT_Vector3D myCampos;
2968  UT_Vector2D myCursorpos;
2969  UT_Vector3D myCursordisplace;
2970  UT_Vector3D myRaypos;
2971  UT_Vector3D myRaydir;
2972  fpreal64 myStrengthscale;
2973  int64 myButton;
2974  bool myShiftkey;
2975  bool myCtrlkey;
2976 
2977 };
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
UT_Vector4D opCamxform1(const SOP_NodeVerb::CookParms &cookparms) const
type
Definition: core.h:977
UT_StringHolder opActivegroup(const SOP_NodeVerb::CookParms &cookparms) const
Plantmode opPlantmode(const SOP_NodeVerb::CookParms &cookparms) const
void setActivename(const UT_StringHolder &val)
void setMirrororigin(UT_Vector3D val)
fpreal64 opSoft(const SOP_NodeVerb::CookParms &cookparms) const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
exint nodeIdx() const
Definition: SOP_NodeVerb.h:102
UT_StringHolder opStashnode(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector3I &v)
void setActivegroup(const UT_StringHolder &val)
fpreal64 opLiftangle(const SOP_NodeVerb::CookParms &cookparms) const
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:734
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void setAdjustlengthlength(fpreal64 val)
static void loadData(UT_IStream &is, fpreal64 &v)
bool opColorbyname(const SOP_NodeVerb::CookParms &cookparms) const
void setAdjustlengthmode(Adjustlengthmode val)
bool opPlantinterpolaterelskin(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D opCursorpos(const SOP_NodeVerb::CookParms &cookparms) const
void setBrushmaintainlength(fpreal64 val)
Drawsegmode getDrawsegmode() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
exint bread(int32 *buffer, exint asize=1)
UT_SharedPtr< UT_Ramp > getCurvemaskramp() const
bool opMoverotatewithskin(const SOP_NodeVerb::CookParms &cookparms) const
GT_API const UT_StringHolder time
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getActivegroup() const
bool opCollidewithskin(const SOP_NodeVerb::CookParms &cookparms) const
void buildFromOp(const SOP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
fpreal getTime() const
Definition: OP_Context.h:60
fpreal64 opBrushbendfalloff(const SOP_NodeVerb::CookParms &cookparms) const
exint getNestNumParms(TempIndex idx) const override
const GLfloat * c
Definition: glew.h:16631
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
const char * getNestParmName(TempIndex fieldnum) const override
bool operator!=(const SOP_GuideGroomCoreParms &src) const
UT_StringHolder opNameattrib(const SOP_NodeVerb::CookParms &cookparms) const
int64 exint
Definition: SYS_Types.h:125
Drawsegmode opDrawsegmode(const SOP_NodeVerb::CookParms &cookparms) const
void setDrawsegmode(Drawsegmode val)
fpreal64 opObjectradius(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, PRM_DataItemHandle s)
SYS_FORCE_INLINE const char * buffer() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
bool opPlantinterpolateguides(const SOP_NodeVerb::CookParms &cookparms) const
const SOP_GraphProxy * graph() const
Definition: SOP_NodeVerb.h:101
static void saveData(std::ostream &os, int64 v)
static void loadData(UT_IStream &is, UT_Matrix2D &v)
UT_SharedPtr< UT_Ramp > opCurvemaskramp(const SOP_NodeVerb::CookParms &cookparms) const
An output stream object that owns its own string buffer storage.
UT_Vector4D opCamxform2(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector4D opCamxform0(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D opMirrordir(const SOP_NodeVerb::CookParms &cookparms) const
Button opButton(const SOP_NodeVerb::CookParms &cookparms) const
void save(std::ostream &os) const
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
fpreal64 opSmoothtargetsmoothness(const SOP_NodeVerb::CookParms &cookparms) const
GLenum src
Definition: glcorearb.h:1792
UT_Vector3D opPr(const SOP_NodeVerb::CookParms &cookparms) const
void setCamxform1(UT_Vector4D val)
fpreal64 opSpacing(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
static void loadData(UT_IStream &is, int64 &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
UT_Vector3D opP(const SOP_NodeVerb::CookParms &cookparms) const
Drawcurvetype getDrawcurvetype() const
void setCurvemaskramp(UT_SharedPtr< UT_Ramp > val)
fpreal64 opDensity(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D getMirrororigin() const
fpreal64 opScreenradius(const SOP_NodeVerb::CookParms &cookparms) const
ParmType getNestParmType(TempIndex fieldnum) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
Adjustlengthmethod getAdjustlengthmethod() const
double fpreal64
Definition: SYS_Types.h:201
int64 opPlantsegcount(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, bool &v)
static void saveData(std::ostream &os, UT_Vector3D v)
UT_Vector3D opRaypos(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
fpreal64 opBrushmaintainlength(const SOP_NodeVerb::CookParms &cookparms) const
void setDrawcurvetype(Drawcurvetype val)
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
fpreal64 getBrushmaintainlength() const
void setStrands(PRM_DataItemHandle val)
bool opBlurperpoint(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4D &v)
SYS_FORCE_INLINE T & y()
Definition: UT_Vector3.h:508
Adjustlengthmethod opAdjustlengthmethod(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opBrushbend(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
int64 opColorseed(const SOP_NodeVerb::CookParms &cookparms) const
exint length() const
static void loadData(UT_IStream &is, UT_Vector3D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
fpreal64 opRaybias(const SOP_NodeVerb::CookParms &cookparms) const
Resamplesegmode getResamplesegmode() const
void setGroom(PRM_DataItemHandle val)
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:30
UT_Vector3D getCursordisplace() const
void setAdjustlengthmethod(Adjustlengthmethod val)
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
bool opPreviewutil(const SOP_NodeVerb::CookParms &cookparms) const
const GLdouble * v
Definition: glcorearb.h:836
Liftmode opLiftmode(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opTwistangle(const SOP_NodeVerb::CookParms &cookparms) const
Grouptype opGrouptype(const SOP_NodeVerb::CookParms &cookparms) const
bool opUsepartinglines(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getActivename() const
Editsoftmode getEditsoftmode() const
SYS_FORCE_INLINE T & z()
Definition: UT_Vector3.h:510
UT_Vector3D opShear(const SOP_NodeVerb::CookParms &cookparms) const
PRM_DataItemHandle opGroom(const SOP_NodeVerb::CookParms &cookparms) const
PRM_DataItemHandle getStrokes() const
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
static void loadData(UT_IStream &is, UT_Vector2I &v)
const UT_StringHolder & getMirrorgroup() const
static void saveData(std::ostream &os, bool v)
static void saveData(std::ostream &os, UT_Vector2D v)
const UT_StringHolder & getStashnode() const
long long int64
Definition: SYS_Types.h:116
UT_Vector3D opT(const SOP_NodeVerb::CookParms &cookparms) const
Resamplesegmode opResamplesegmode(const SOP_NodeVerb::CookParms &cookparms) const
bool opSculptdoconstrain(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3T< fpreal64 > UT_Vector3D
fpreal64 getSmoothtargetsmoothness() const
UT_StringHolder opMirrorgroup(const SOP_NodeVerb::CookParms &cookparms) const
bool opShiftkey(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opEditcurvefrac(const SOP_NodeVerb::CookParms &cookparms) const
Adjustlengthmode getAdjustlengthmode() const
static void loadData(UT_IStream &is, UT_StringHolder &v)
bool opEditsoft(const SOP_NodeVerb::CookParms &cookparms) const
bool opSculptlockroot(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opAdjustlengthlength(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opAdjustlengthvalue(const SOP_NodeVerb::CookParms &cookparms) const
void setStrokes(PRM_DataItemHandle val)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
fpreal64 opStrengthscale(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
bool opDrawonskin(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Vector4D v)
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:287
PRM_DataItemHandle getGroom() const
bool opNamenewprims(const SOP_NodeVerb::CookParms &cookparms) const
void setCursorpos(UT_Vector2D val)
void setNameattrib(const UT_StringHolder &val)
GT_API const UT_StringHolder version
DEP_MicroNode * depnode() const
Definition: SOP_NodeVerb.h:109
Adjustlengthmode opAdjustlengthmode(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getNameattrib() const
UT_Vector3D opRaydir(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector4D opCamxform3(const SOP_NodeVerb::CookParms &cookparms) const
bool opBlurinskinspace(const SOP_NodeVerb::CookParms &cookparms) const
GLboolean * data
Definition: glcorearb.h:130
UT_Vector3D opCursordisplace(const SOP_NodeVerb::CookParms &cookparms) const
GLuint GLfloat * val
Definition: glcorearb.h:1607
void setMirrordir(UT_Vector3D val)
void setAdjustlengthvalue(fpreal64 val)
void setResampleseglength(fpreal64 val)
const UT_StringHolder & getGroup() const
UT_StringHolder opActivename(const SOP_NodeVerb::CookParms &cookparms) const
Editsoftmode opEditsoftmode(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void setGroup(const UT_StringHolder &val)
static void saveData(std::ostream &os, UT_StringHolder s)
PRM_DataItemHandle opStrands(const SOP_NodeVerb::CookParms &cookparms) const
int64 opDrawsegcount(const SOP_NodeVerb::CookParms &cookparms) const
bool opBrushsurface(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 fpreal
Definition: SYS_Types.h:277
static void saveData(std::ostream &os, UT_Matrix4D v)
static void loadData(UT_IStream &is, UT_Vector4I &v)
Utility class for containing a color ramp.
Definition: UT_Ramp.h:84
fpreal64 opDrawseglength(const SOP_NodeVerb::CookParms &cookparms) const
bool opStrandmode(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
Drawcurvetype opDrawcurvetype(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Matrix3D v)
void setStashnode(const UT_StringHolder &val)
Vec3< typename MatType::value_type > getScale(const MatType &mat)
Return a Vec3 representing the lengths of the passed matrix's upper 3×3's rows.
Definition: Mat.h:655
bool opBrushsnaptosurface(const SOP_NodeVerb::CookParms &cookparms) const
#define SOP_API
Definition: SOP_API.h:10
GLsizei const GLfloat * value
Definition: glcorearb.h:823
bool opCtrlkey(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
UT_Vector3D opS(const SOP_NodeVerb::CookParms &cookparms) const
int64 opResamplesegcount(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE T & x()
Definition: UT_Vector3.h:506
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:748
static void saveData(std::ostream &os, UT_Matrix2D v)
int64 opEditactiveprim(const SOP_NodeVerb::CookParms &cookparms) const
PRM_DataItemHandle getStrands() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
void copyFrom(const SOP_NodeParms *src) override
Rord opRord(const SOP_NodeVerb::CookParms &cookparms) const
const char * findChar(int c) const
Definition: UT_String.h:1371
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:171
Tool opTool(const SOP_NodeVerb::CookParms &cookparms) const
void setCursordisplace(UT_Vector3D val)
void setCamxform2(UT_Vector4D val)
bool opUsemask(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opScale(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D opR(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D opMirrororigin(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
fpreal64 opResampleseglength(const SOP_NodeVerb::CookParms &cookparms) const
bool opGroupnewprims(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, fpreal64 v)
void loadFromOpSubclass(const LoadParms &loadparms) override
void setBrushbendfalloff(fpreal64 val)
void setCamxform0(UT_Vector4D val)
static void loadData(UT_IStream &is, UT_Vector2D &v)
GLboolean r
Definition: glcorearb.h:1221
fpreal64 opPlantlength(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix4D &v)
Xord opXord(const SOP_NodeVerb::CookParms &cookparms) const
GLdouble s
Definition: glew.h:1395
void setResamplesegmode(Resamplesegmode val)
bool opPaintmaskpoints(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D opCampos(const SOP_NodeVerb::CookParms &cookparms) const
void setCamxform3(UT_Vector4D val)
const OP_Context & context() const
Definition: SOP_NodeVerb.h:107
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:89
void setMirrorgroup(const UT_StringHolder &val)
bool operator==(const SOP_GuideGroomCoreParms &src) const
SYS_FORCE_INLINE bool isstring() const
void setSmoothtargetsmoothness(fpreal64 val)
bool opClumpperpoint(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
bool opMirror(const SOP_NodeVerb::CookParms &cookparms) const
void setEditsoftmode(Editsoftmode val)
bool opRecordstrokes(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opEditcurvedist(const SOP_NodeVerb::CookParms &cookparms) const
PRM_DataItemHandle opStrokes(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override