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 class DEP_MicroNode;
23 namespace SOP_GuideGroomCoreEnums
24 {
25  enum class Grouptype
26  {
27  GUESS = 0,
29  EDGES,
30  POINTS,
31  PRIMS
32  };
33  enum class Tool
34  {
35  DRAW = 0,
36  PLANT,
37  DELETE,
38  CULL,
39  CUT,
40  BRUSH,
41  SCULPT,
42  SCULPTPHYS,
43  STRAIGHTEN,
44  LIFT,
46  SMOOTH,
47  ORIENT,
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 Cutmode
77  {
78  REDISTRIBUTE = 0,
79  DELETE
80  };
81  enum class Plantmode
82  {
83  SINGLE = 0,
84  SCATTER
85  };
87  {
88  NONE = 0,
91  };
92  enum class Drawtemplatesource
93  {
94  NONE = 0,
97  };
98  enum class Drawcurvetype
99  {
100  GUIDE = 0,
101  PARTLINE
102  };
103  enum class Drawsegmode
104  {
105  FIXED = 0,
106  ADAPTIVE
107  };
108  enum class Orientbrushupmode
109  {
110  CAM = 0,
111  SKINUPVEC,
112  ROTATE,
113  ALIGN
114  };
115  enum class Editsoftmode
116  {
117  ENDPOINTS = 0,
118  CURVEFRAC,
119  ABSDIST
120  };
121  enum class Resamplesegmode
122  {
123  FIXED = 0,
124  ADAPTIVE,
125  ADD,
126  REMOVE
127  };
128  enum class Xord
129  {
130  SRT = 0,
131  STR,
132  RST,
133  RTS,
134  TSR,
135  TRS
136  };
137  enum class Rord
138  {
139  XYZ = 0,
140  XZY,
141  YXZ,
142  YZX,
143  ZXY,
144  ZYX
145  };
146  enum class Button
147  {
148  NONE = 0,
149  LEFT,
150  MIDDLE
151  };
152 }
153 
154 
156 {
157 public:
158  static int version() { return 1; }
160  {
164 
165 
167  {
168  groupcolor = UT_Vector3D(1,1,1);
169  groupname = ""_UTsh;
170  groupoptions = 0;
171 
172  }
173 
174  bool operator==(const Folder_grouplist &src) const
175  {
176  if (groupcolor != src.groupcolor) return false;
177  if (groupname != src.groupname) return false;
178  if (groupoptions != src.groupoptions) return false;
179 
180  return true;
181  }
182  bool operator!=(const Folder_grouplist &src) const
183  {
184  return !operator==(src);
185  }
186 
187  };
188 
190  {
192 
193  buf.strcat("[ ");
194  for (int i = 0; i < list.entries(); i++)
195  {
196  if (i)
197  buf.strcat(", ");
198  buf.strcat("( ");
199  buf.append("");
200  buf.appendSprintf("(%f, %f, %f)", list(i).groupcolor.x(), list(i).groupcolor.y(), list(i).groupcolor.z());
201  buf.append(", ");
202  { UT_String tmp; tmp = UT_StringWrap(list(i).groupname).makeQuotedString('"'); buf.strcat(tmp); }
203  buf.append(", ");
204  buf.appendSprintf("%d", (int) list(i).groupoptions);
205 
206  buf.strcat(" )");
207  }
208  buf.strcat(" ]");
209 
211  return result;
212  }
213 
215  {
216  myStashnode = ".."_UTsh;
217  myGroup = ""_UTsh;
218  myGrouptype = 0;
219  myUsemask = true;
220  myMirrorbrush = false;
221  myMirror = false;
222  myMirrorgroup = ""_UTsh;
223  myMirrororigin = UT_Vector3D(0,0,0);
224  myMirrordir = UT_Vector3D(1,0,0);
225  myTool = 5;
226  myRaybias = 0.0001;
227  myStrandmode = false;
228  myCollidewithskin = true;
229  myCreateorient = false;
230  myOrientname = "orient"_UTsh;
231  myOrientup = UT_Vector3D(0,1,0);
232  myOrientupattrib = "tangent"_UTsh;
233  myOrientupattribflip = false;
234  myTemplatesourcegroup = ""_UTsh;
235  myWidthoverride = true;
236  myWidth = 0.001;
237  myBrushsurface = false;
238  myUsepartinglines = true;
239  myScreenradius = 0;
240  myObjectradius = 0;
241  mySoft = 0;
242  mySpacing = 0;
243  myDensity = 1000;
244  myBrushmaintainlength = 0;
245  myBrushsnaptosurface = false;
246  myBrushbend = 0;
247  myBrushbendfalloff = 0;
248  myLiftmode = 0;
249  myLiftangle = 45;
250  myAdjustlengthmode = 0;
251  myAdjustlengthvalue = 0.1;
252  myAdjustlengthlength = 0.1;
253  myAdjustlengthmethod = 1;
254  myMoverotatewithskin = false;
255  mySculptdoconstrain = true;
256  mySculptlockroot = true;
257  mySculptmaintainevensegments = false;
258  mySmoothtargetsmoothness = 0.5;
259  mySmoothposition = true;
260  mySmoothorient = true;
261  myBlurinskinspace = false;
262  myBlurperpoint = false;
263  myBlurshape = false;
264  myBlurlength = false;
265  myBlurorient = false;
266  myCutmode = 0;
267  myClumpperpoint = false;
268  myPlantmode = 1;
269  myPlantinterpolateguides = true;
270  myPlantinterpolaterelskin = true;
271  myPlantinterpolateorient = true;
272  myPlanttemplatesource = 1;
273  myPlantlength = 0.01;
274  myPlantsegcount = 8;
275  myDrawonskin = false;
276  myDrawinterpolateorient = false;
277  myDrawtemplatesource = 1;
278  myDrawlimitlength = false;
279  myDrawcurvetype = 0;
280  myDrawsegmode = 0;
281  myDrawsegcount = 8;
282  myDrawseglength = 0.05;
283  myOrientbrushupmode = 0;
284  myOrientbrushperpoint = false;
285  myPainttemplateallowblending = false;
286  myEditactiveprim = 0;
287  myEditsoft = true;
288  myEditsoftmode = 1;
289  myEditcurvefrac = 1;
290  myEditcurvedist = 1;
291  myResamplesegmode = 0;
292  myResamplesegcount = 8;
293  myResampleseglength = 0.05;
294  myTwistangle = 45;
295  myCurvemaskramp = UT_SharedPtr<UT_Ramp>(0);
296  myGroom = PRM_DataItemHandle(0);
297  myStrands = PRM_DataItemHandle(0);
298  myStrokes = PRM_DataItemHandle(0);
299  myPreviewutil = true;
300  myPaintmaskpoints = false;
301  myGroupnewprims = false;
302  myNamenewprims = true;
303  myActivegroup = ""_UTsh;
304  myNameattrib = ""_UTsh;
305  myActivename = ""_UTsh;
306  myOverridecolor = false;
307  myColorbyname = false;
308  myDefaultcolor = UT_Vector3D(1,1,1);
309  myTemplatecolor = UT_Vector3D(0.1,0.1,0.1);
310  myColorseed = 0;
311  myXord = 0;
312  myRord = 0;
313  myT = UT_Vector3D(0,0,0);
314  myR = UT_Vector3D(0,0,0);
315  myS = UT_Vector3D(1,1,1);
316  myShear = UT_Vector3D(0,0,0);
317  myScale = 1;
318  myP = UT_Vector3D(0,0,0);
319  myPr = UT_Vector3D(0,0,0);
320  myCamxform0 = 0;
321  myCamxform1 = 0;
322  myCamxform2 = 0;
323  myCamxform3 = 0;
324  myCampos = 0;
325  myCursorpos = 0;
326  myCursordisplace = 0;
327  myRaypos = 0;
328  myRaydir = 0;
329  myStrengthscale = 0;
330  myButton = 0;
331  myShiftkey = false;
332  myCtrlkey = false;
333 
334  }
335 
336  explicit SOP_GuideGroomCoreParms(const SOP_GuideGroomCoreParms &) = default;
338  SOP_GuideGroomCoreParms(SOP_GuideGroomCoreParms &&) noexcept = default;
339  SOP_GuideGroomCoreParms &operator=(SOP_GuideGroomCoreParms &&) noexcept = default;
340 
341  ~SOP_GuideGroomCoreParms() override {}
342 
344  {
345  if (myStashnode != src.myStashnode) return false;
346  if (myGroup != src.myGroup) return false;
347  if (myGrouptype != src.myGrouptype) return false;
348  if (myUsemask != src.myUsemask) return false;
349  if (myMirrorbrush != src.myMirrorbrush) return false;
350  if (myMirror != src.myMirror) return false;
351  if (myMirrorgroup != src.myMirrorgroup) return false;
352  if (myMirrororigin != src.myMirrororigin) return false;
353  if (myMirrordir != src.myMirrordir) return false;
354  if (myTool != src.myTool) return false;
355  if (myRaybias != src.myRaybias) return false;
356  if (myStrandmode != src.myStrandmode) return false;
357  if (myCollidewithskin != src.myCollidewithskin) return false;
358  if (myCreateorient != src.myCreateorient) return false;
359  if (myOrientname != src.myOrientname) return false;
360  if (myOrientup != src.myOrientup) return false;
361  if (myOrientupattrib != src.myOrientupattrib) return false;
362  if (myOrientupattribflip != src.myOrientupattribflip) return false;
363  if (myTemplatesourcegroup != src.myTemplatesourcegroup) return false;
364  if (myWidthoverride != src.myWidthoverride) return false;
365  if (myWidth != src.myWidth) return false;
366  if (myBrushsurface != src.myBrushsurface) return false;
367  if (myUsepartinglines != src.myUsepartinglines) return false;
368  if (myScreenradius != src.myScreenradius) return false;
369  if (myObjectradius != src.myObjectradius) return false;
370  if (mySoft != src.mySoft) return false;
371  if (mySpacing != src.mySpacing) return false;
372  if (myDensity != src.myDensity) return false;
373  if (myBrushmaintainlength != src.myBrushmaintainlength) return false;
374  if (myBrushsnaptosurface != src.myBrushsnaptosurface) return false;
375  if (myBrushbend != src.myBrushbend) return false;
376  if (myBrushbendfalloff != src.myBrushbendfalloff) return false;
377  if (myLiftmode != src.myLiftmode) return false;
378  if (myLiftangle != src.myLiftangle) return false;
379  if (myAdjustlengthmode != src.myAdjustlengthmode) return false;
380  if (myAdjustlengthvalue != src.myAdjustlengthvalue) return false;
381  if (myAdjustlengthlength != src.myAdjustlengthlength) return false;
382  if (myAdjustlengthmethod != src.myAdjustlengthmethod) return false;
383  if (myMoverotatewithskin != src.myMoverotatewithskin) return false;
384  if (mySculptdoconstrain != src.mySculptdoconstrain) return false;
385  if (mySculptlockroot != src.mySculptlockroot) return false;
386  if (mySculptmaintainevensegments != src.mySculptmaintainevensegments) return false;
387  if (mySmoothtargetsmoothness != src.mySmoothtargetsmoothness) return false;
388  if (mySmoothposition != src.mySmoothposition) return false;
389  if (mySmoothorient != src.mySmoothorient) return false;
390  if (myBlurinskinspace != src.myBlurinskinspace) return false;
391  if (myBlurperpoint != src.myBlurperpoint) return false;
392  if (myBlurshape != src.myBlurshape) return false;
393  if (myBlurlength != src.myBlurlength) return false;
394  if (myBlurorient != src.myBlurorient) return false;
395  if (myCutmode != src.myCutmode) return false;
396  if (myClumpperpoint != src.myClumpperpoint) return false;
397  if (myPlantmode != src.myPlantmode) return false;
398  if (myPlantinterpolateguides != src.myPlantinterpolateguides) return false;
399  if (myPlantinterpolaterelskin != src.myPlantinterpolaterelskin) return false;
400  if (myPlantinterpolateorient != src.myPlantinterpolateorient) return false;
401  if (myPlanttemplatesource != src.myPlanttemplatesource) return false;
402  if (myPlantlength != src.myPlantlength) return false;
403  if (myPlantsegcount != src.myPlantsegcount) return false;
404  if (myDrawonskin != src.myDrawonskin) return false;
405  if (myDrawinterpolateorient != src.myDrawinterpolateorient) return false;
406  if (myDrawtemplatesource != src.myDrawtemplatesource) return false;
407  if (myDrawlimitlength != src.myDrawlimitlength) return false;
408  if (myDrawcurvetype != src.myDrawcurvetype) return false;
409  if (myDrawsegmode != src.myDrawsegmode) return false;
410  if (myDrawsegcount != src.myDrawsegcount) return false;
411  if (myDrawseglength != src.myDrawseglength) return false;
412  if (myOrientbrushupmode != src.myOrientbrushupmode) return false;
413  if (myOrientbrushperpoint != src.myOrientbrushperpoint) return false;
414  if (myPainttemplateallowblending != src.myPainttemplateallowblending) return false;
415  if (myEditactiveprim != src.myEditactiveprim) return false;
416  if (myEditsoft != src.myEditsoft) return false;
417  if (myEditsoftmode != src.myEditsoftmode) return false;
418  if (myEditcurvefrac != src.myEditcurvefrac) return false;
419  if (myEditcurvedist != src.myEditcurvedist) return false;
420  if (myResamplesegmode != src.myResamplesegmode) return false;
421  if (myResamplesegcount != src.myResamplesegcount) return false;
422  if (myResampleseglength != src.myResampleseglength) return false;
423  if (myTwistangle != src.myTwistangle) return false;
424  if (myCurvemaskramp != src.myCurvemaskramp)
425  { if (!myCurvemaskramp || !src.myCurvemaskramp || !(*myCurvemaskramp == *src.myCurvemaskramp)) return false; }
426  if (myGroom != src.myGroom)
427  { /* no == on PRM_DataItem */ return false; }
428  if (myStrands != src.myStrands)
429  { /* no == on PRM_DataItem */ return false; }
430  if (myStrokes != src.myStrokes)
431  { /* no == on PRM_DataItem */ return false; }
432  if (myPreviewutil != src.myPreviewutil) return false;
433  if (myPaintmaskpoints != src.myPaintmaskpoints) return false;
434  if (myGroupnewprims != src.myGroupnewprims) return false;
435  if (myNamenewprims != src.myNamenewprims) return false;
436  if (myActivegroup != src.myActivegroup) return false;
437  if (myNameattrib != src.myNameattrib) return false;
438  if (myActivename != src.myActivename) return false;
439  if (myOverridecolor != src.myOverridecolor) return false;
440  if (myColorbyname != src.myColorbyname) return false;
441  if (myDefaultcolor != src.myDefaultcolor) return false;
442  if (myTemplatecolor != src.myTemplatecolor) return false;
443  if (myColorseed != src.myColorseed) return false;
444  if (myFolder_grouplist != src.myFolder_grouplist) return false;
445  if (myXord != src.myXord) return false;
446  if (myRord != src.myRord) return false;
447  if (myT != src.myT) return false;
448  if (myR != src.myR) return false;
449  if (myS != src.myS) return false;
450  if (myShear != src.myShear) return false;
451  if (myScale != src.myScale) return false;
452  if (myP != src.myP) return false;
453  if (myPr != src.myPr) return false;
454  if (myCamxform0 != src.myCamxform0) return false;
455  if (myCamxform1 != src.myCamxform1) return false;
456  if (myCamxform2 != src.myCamxform2) return false;
457  if (myCamxform3 != src.myCamxform3) return false;
458  if (myCampos != src.myCampos) return false;
459  if (myCursorpos != src.myCursorpos) return false;
460  if (myCursordisplace != src.myCursordisplace) return false;
461  if (myRaypos != src.myRaypos) return false;
462  if (myRaydir != src.myRaydir) return false;
463  if (myStrengthscale != src.myStrengthscale) return false;
464  if (myButton != src.myButton) return false;
465  if (myShiftkey != src.myShiftkey) return false;
466  if (myCtrlkey != src.myCtrlkey) return false;
467 
468  return true;
469  }
471  {
472  return !operator==(src);
473  }
491 
492 
493 
494  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
495  {
496  myStashnode = ".."_UTsh;
497  if (true)
498  graph->evalOpParm(myStashnode, nodeidx, "stashnode", time, 0);
499  myGroup = ""_UTsh;
500  if (true)
501  graph->evalOpParm(myGroup, nodeidx, "group", time, 0);
502  myGrouptype = 0;
503  if (true)
504  graph->evalOpParm(myGrouptype, nodeidx, "grouptype", time, 0);
505  myUsemask = true;
506  if (true)
507  graph->evalOpParm(myUsemask, nodeidx, "usemask", time, 0);
508  myMirrorbrush = false;
509  if (true)
510  graph->evalOpParm(myMirrorbrush, nodeidx, "mirrorbrush", time, 0);
511  myMirror = false;
512  if (true)
513  graph->evalOpParm(myMirror, nodeidx, "mirror", time, 0);
514  myMirrorgroup = ""_UTsh;
515  if (true)
516  graph->evalOpParm(myMirrorgroup, nodeidx, "mirrorgroup", time, 0);
517  myMirrororigin = UT_Vector3D(0,0,0);
518  if (true)
519  graph->evalOpParm(myMirrororigin, nodeidx, "mirrororigin", time, 0);
520  myMirrordir = UT_Vector3D(1,0,0);
521  if (true)
522  graph->evalOpParm(myMirrordir, nodeidx, "mirrordir", time, 0);
523  myTool = 5;
524  if (true)
525  graph->evalOpParm(myTool, nodeidx, "tool", time, 0);
526  myRaybias = 0.0001;
527  if (true)
528  graph->evalOpParm(myRaybias, nodeidx, "raybias", time, 0);
529  myStrandmode = false;
530  if (true)
531  graph->evalOpParm(myStrandmode, nodeidx, "strandmode", time, 0);
532  myCollidewithskin = true;
533  if (true)
534  graph->evalOpParm(myCollidewithskin, nodeidx, "collidewithskin", time, 0);
535  myCreateorient = false;
536  if (true)
537  graph->evalOpParm(myCreateorient, nodeidx, "createorient", time, 0);
538  myOrientname = "orient"_UTsh;
539  if (true)
540  graph->evalOpParm(myOrientname, nodeidx, "orientname", time, 0);
541  myOrientup = UT_Vector3D(0,1,0);
542  if (true)
543  graph->evalOpParm(myOrientup, nodeidx, "orientup", time, 0);
544  myOrientupattrib = "tangent"_UTsh;
545  if (true)
546  graph->evalOpParm(myOrientupattrib, nodeidx, "orientupattrib", time, 0);
547  myOrientupattribflip = false;
548  if (true)
549  graph->evalOpParm(myOrientupattribflip, nodeidx, "orientupattribflip", time, 0);
550  myTemplatesourcegroup = ""_UTsh;
551  if (true)
552  graph->evalOpParm(myTemplatesourcegroup, nodeidx, "templatesourcegroup", time, 0);
553  myWidthoverride = true;
554  if (true)
555  graph->evalOpParm(myWidthoverride, nodeidx, "widthoverride", time, 0);
556  myWidth = 0.001;
557  if (true)
558  graph->evalOpParm(myWidth, nodeidx, "width", time, 0);
559  myBrushsurface = false;
560  if (true)
561  graph->evalOpParm(myBrushsurface, nodeidx, "brushsurface", time, 0);
562  myUsepartinglines = true;
563  if (true)
564  graph->evalOpParm(myUsepartinglines, nodeidx, "usepartinglines", time, 0);
565  myScreenradius = 0;
566  if (true)
567  graph->evalOpParm(myScreenradius, nodeidx, "screenradius", time, 0);
568  myObjectradius = 0;
569  if (true)
570  graph->evalOpParm(myObjectradius, nodeidx, "objectradius", time, 0);
571  mySoft = 0;
572  if (true)
573  graph->evalOpParm(mySoft, nodeidx, "soft", time, 0);
574  mySpacing = 0;
575  if (true)
576  graph->evalOpParm(mySpacing, nodeidx, "spacing", time, 0);
577  myDensity = 1000;
578  if (true)
579  graph->evalOpParm(myDensity, nodeidx, "density", time, 0);
580  myBrushmaintainlength = 0;
581  if (true)
582  graph->evalOpParm(myBrushmaintainlength, nodeidx, "brushmaintainlength", time, 0);
583  myBrushsnaptosurface = false;
584  if (true)
585  graph->evalOpParm(myBrushsnaptosurface, nodeidx, "brushsnaptosurface", time, 0);
586  myBrushbend = 0;
587  if (true)
588  graph->evalOpParm(myBrushbend, nodeidx, "brushbend", time, 0);
589  myBrushbendfalloff = 0;
590  if (true)
591  graph->evalOpParm(myBrushbendfalloff, nodeidx, "brushbendfalloff", time, 0);
592  myLiftmode = 0;
593  if (true)
594  graph->evalOpParm(myLiftmode, nodeidx, "liftmode", time, 0);
595  myLiftangle = 45;
596  if (true)
597  graph->evalOpParm(myLiftangle, nodeidx, "liftangle", time, 0);
598  myAdjustlengthmode = 0;
599  if (true)
600  graph->evalOpParm(myAdjustlengthmode, nodeidx, "adjustlengthmode", time, 0);
601  myAdjustlengthvalue = 0.1;
602  if (true)
603  graph->evalOpParm(myAdjustlengthvalue, nodeidx, "adjustlengthvalue", time, 0);
604  myAdjustlengthlength = 0.1;
605  if (true)
606  graph->evalOpParm(myAdjustlengthlength, nodeidx, "adjustlengthlength", time, 0);
607  myAdjustlengthmethod = 1;
608  if (true)
609  graph->evalOpParm(myAdjustlengthmethod, nodeidx, "adjustlengthmethod", time, 0);
610  myMoverotatewithskin = false;
611  if (true)
612  graph->evalOpParm(myMoverotatewithskin, nodeidx, "moverotatewithskin", time, 0);
613  mySculptdoconstrain = true;
614  if (true)
615  graph->evalOpParm(mySculptdoconstrain, nodeidx, "sculptdoconstrain", time, 0);
616  mySculptlockroot = true;
617  if (true)
618  graph->evalOpParm(mySculptlockroot, nodeidx, "sculptlockroot", time, 0);
619  mySculptmaintainevensegments = false;
620  if (true)
621  graph->evalOpParm(mySculptmaintainevensegments, nodeidx, "sculptmaintainevensegments", time, 0);
622  mySmoothtargetsmoothness = 0.5;
623  if (true)
624  graph->evalOpParm(mySmoothtargetsmoothness, nodeidx, "smoothtargetsmoothness", time, 0);
625  mySmoothposition = true;
626  if (true)
627  graph->evalOpParm(mySmoothposition, nodeidx, "smoothposition", time, 0);
628  mySmoothorient = true;
629  if (true)
630  graph->evalOpParm(mySmoothorient, nodeidx, "smoothorient", time, 0);
631  myBlurinskinspace = false;
632  if (true)
633  graph->evalOpParm(myBlurinskinspace, nodeidx, "blurinskinspace", time, 0);
634  myBlurperpoint = false;
635  if (true)
636  graph->evalOpParm(myBlurperpoint, nodeidx, "blurperpoint", time, 0);
637  myBlurshape = false;
638  if (true)
639  graph->evalOpParm(myBlurshape, nodeidx, "blurshape", time, 0);
640  myBlurlength = false;
641  if (true)
642  graph->evalOpParm(myBlurlength, nodeidx, "blurlength", time, 0);
643  myBlurorient = false;
644  if (true)
645  graph->evalOpParm(myBlurorient, nodeidx, "blurorient", time, 0);
646  myCutmode = 0;
647  if (true)
648  graph->evalOpParm(myCutmode, nodeidx, "cutmode", time, 0);
649  myClumpperpoint = false;
650  if (true)
651  graph->evalOpParm(myClumpperpoint, nodeidx, "clumpperpoint", time, 0);
652  myPlantmode = 1;
653  if (true)
654  graph->evalOpParm(myPlantmode, nodeidx, "plantmode", time, 0);
655  myPlantinterpolateguides = true;
656  if (true)
657  graph->evalOpParm(myPlantinterpolateguides, nodeidx, "plantinterpolateguides", time, 0);
658  myPlantinterpolaterelskin = true;
659  if (true)
660  graph->evalOpParm(myPlantinterpolaterelskin, nodeidx, "plantinterpolaterelskin", time, 0);
661  myPlantinterpolateorient = true;
662  if (true)
663  graph->evalOpParm(myPlantinterpolateorient, nodeidx, "plantinterpolateorient", time, 0);
664  myPlanttemplatesource = 1;
665  if (true)
666  graph->evalOpParm(myPlanttemplatesource, nodeidx, "planttemplatesource", time, 0);
667  myPlantlength = 0.01;
668  if (true)
669  graph->evalOpParm(myPlantlength, nodeidx, "plantlength", time, 0);
670  myPlantsegcount = 8;
671  if (true)
672  graph->evalOpParm(myPlantsegcount, nodeidx, "plantsegcount", time, 0);
673  myDrawonskin = false;
674  if (true)
675  graph->evalOpParm(myDrawonskin, nodeidx, "drawonskin", time, 0);
676  myDrawinterpolateorient = false;
677  if (true)
678  graph->evalOpParm(myDrawinterpolateorient, nodeidx, "drawinterpolateorient", time, 0);
679  myDrawtemplatesource = 1;
680  if (true)
681  graph->evalOpParm(myDrawtemplatesource, nodeidx, "drawtemplatesource", time, 0);
682  myDrawlimitlength = false;
683  if (true)
684  graph->evalOpParm(myDrawlimitlength, nodeidx, "drawlimitlength", time, 0);
685  myDrawcurvetype = 0;
686  if (true)
687  graph->evalOpParm(myDrawcurvetype, nodeidx, "drawcurvetype", time, 0);
688  myDrawsegmode = 0;
689  if (true)
690  graph->evalOpParm(myDrawsegmode, nodeidx, "drawsegmode", time, 0);
691  myDrawsegcount = 8;
692  if (true)
693  graph->evalOpParm(myDrawsegcount, nodeidx, "drawsegcount", time, 0);
694  myDrawseglength = 0.05;
695  if (true)
696  graph->evalOpParm(myDrawseglength, nodeidx, "drawseglength", time, 0);
697  myOrientbrushupmode = 0;
698  if (true)
699  graph->evalOpParm(myOrientbrushupmode, nodeidx, "orientbrushupmode", time, 0);
700  myOrientbrushperpoint = false;
701  if (true)
702  graph->evalOpParm(myOrientbrushperpoint, nodeidx, "orientbrushperpoint", time, 0);
703  myPainttemplateallowblending = false;
704  if (true)
705  graph->evalOpParm(myPainttemplateallowblending, nodeidx, "painttemplateallowblending", time, 0);
706  myEditactiveprim = 0;
707  if (true)
708  graph->evalOpParm(myEditactiveprim, nodeidx, "editactiveprim", time, 0);
709  myEditsoft = true;
710  if (true)
711  graph->evalOpParm(myEditsoft, nodeidx, "editsoft", time, 0);
712  myEditsoftmode = 1;
713  if (true)
714  graph->evalOpParm(myEditsoftmode, nodeidx, "editsoftmode", time, 0);
715  myEditcurvefrac = 1;
716  if (true)
717  graph->evalOpParm(myEditcurvefrac, nodeidx, "editcurvefrac", time, 0);
718  myEditcurvedist = 1;
719  if (true)
720  graph->evalOpParm(myEditcurvedist, nodeidx, "editcurvedist", time, 0);
721  myResamplesegmode = 0;
722  if (true)
723  graph->evalOpParm(myResamplesegmode, nodeidx, "resamplesegmode", time, 0);
724  myResamplesegcount = 8;
725  if (true)
726  graph->evalOpParm(myResamplesegcount, nodeidx, "resamplesegcount", time, 0);
727  myResampleseglength = 0.05;
728  if (true)
729  graph->evalOpParm(myResampleseglength, nodeidx, "resampleseglength", time, 0);
730  myTwistangle = 45;
731  if (true)
732  graph->evalOpParm(myTwistangle, nodeidx, "twistangle", time, 0);
733  myCurvemaskramp = UT_SharedPtr<UT_Ramp>(0);
734  if (true)
735  graph->evalOpParm(myCurvemaskramp, nodeidx, "curvemaskramp", time, 0);
736  myGroom = PRM_DataItemHandle(0);
737  if (true)
738  graph->evalOpParm(myGroom, nodeidx, "groom", time, 0);
739  myStrands = PRM_DataItemHandle(0);
740  if (true)
741  graph->evalOpParm(myStrands, nodeidx, "strands", time, 0);
742  myStrokes = PRM_DataItemHandle(0);
743  if (true)
744  graph->evalOpParm(myStrokes, nodeidx, "strokes", time, 0);
745  myPreviewutil = true;
746  if (true)
747  graph->evalOpParm(myPreviewutil, nodeidx, "previewutil", time, 0);
748  myPaintmaskpoints = false;
749  if (true)
750  graph->evalOpParm(myPaintmaskpoints, nodeidx, "paintmaskpoints", time, 0);
751  myGroupnewprims = false;
752  if (true)
753  graph->evalOpParm(myGroupnewprims, nodeidx, "groupnewprims", time, 0);
754  myNamenewprims = true;
755  if (true)
756  graph->evalOpParm(myNamenewprims, nodeidx, "namenewprims", time, 0);
757  myActivegroup = ""_UTsh;
758  if (true)
759  graph->evalOpParm(myActivegroup, nodeidx, "activegroup", time, 0);
760  myNameattrib = ""_UTsh;
761  if (true)
762  graph->evalOpParm(myNameattrib, nodeidx, "nameattrib", time, 0);
763  myActivename = ""_UTsh;
764  if (true)
765  graph->evalOpParm(myActivename, nodeidx, "activename", time, 0);
766  myOverridecolor = false;
767  if (true)
768  graph->evalOpParm(myOverridecolor, nodeidx, "overridecolor", time, 0);
769  myColorbyname = false;
770  if (true)
771  graph->evalOpParm(myColorbyname, nodeidx, "colorbyname", time, 0);
772  myDefaultcolor = UT_Vector3D(1,1,1);
773  if (true)
774  graph->evalOpParm(myDefaultcolor, nodeidx, "defaultcolor", time, 0);
775  myTemplatecolor = UT_Vector3D(0.1,0.1,0.1);
776  if (true)
777  graph->evalOpParm(myTemplatecolor, nodeidx, "templatecolor", time, 0);
778  myColorseed = 0;
779  if (true)
780  graph->evalOpParm(myColorseed, nodeidx, "colorseed", time, 0);
781  if (true)
782  {
783  int64 length = 0;
784  graph->evalOpParm(length, nodeidx, "folder_grouplist", time, 0);
785  if (length < 0) length = 0;
786  myFolder_grouplist.setSize(length);
787  for (exint i = 0; i < length; i++)
788  {
789  int parmidx[1];
790  int offsets[1];
791  parmidx[0] = i+0;
792  offsets[0] = 0;
793  auto && _curentry = myFolder_grouplist(i);
794  (void) _curentry;
795  _curentry.groupcolor = UT_Vector3D(1,1,1);
796  if (true)
797  graph->evalOpParmInst(_curentry.groupcolor, nodeidx, "groupcolor#", parmidx, offsets, time, 0, 2-1);
798  _curentry.groupname = ""_UTsh;
799  if (true)
800  graph->evalOpParmInst(_curentry.groupname, nodeidx, "groupname#", parmidx, offsets, time, 0, 2-1);
801  _curentry.groupoptions = 0;
802  if (true)
803  graph->evalOpParmInst(_curentry.groupoptions, nodeidx, "groupoptions#", parmidx, offsets, time, 0, 2-1);
804 
805  }
806  }
807  else
808  myFolder_grouplist.clear();
809  myXord = 0;
810  if (true)
811  graph->evalOpParm(myXord, nodeidx, "xOrd", time, 0);
812  myRord = 0;
813  if (true)
814  graph->evalOpParm(myRord, nodeidx, "rOrd", time, 0);
815  myT = UT_Vector3D(0,0,0);
816  if (true)
817  graph->evalOpParm(myT, nodeidx, "t", time, 0);
818  myR = UT_Vector3D(0,0,0);
819  if (true)
820  graph->evalOpParm(myR, nodeidx, "r", time, 0);
821  myS = UT_Vector3D(1,1,1);
822  if (true)
823  graph->evalOpParm(myS, nodeidx, "s", time, 0);
824  myShear = UT_Vector3D(0,0,0);
825  if (true)
826  graph->evalOpParm(myShear, nodeidx, "shear", time, 0);
827  myScale = 1;
828  if (true)
829  graph->evalOpParm(myScale, nodeidx, "scale", time, 0);
830  myP = UT_Vector3D(0,0,0);
831  if (true)
832  graph->evalOpParm(myP, nodeidx, "p", time, 0);
833  myPr = UT_Vector3D(0,0,0);
834  if (true)
835  graph->evalOpParm(myPr, nodeidx, "pr", time, 0);
836  myCamxform0 = 0;
837  if (true)
838  graph->evalOpParm(myCamxform0, nodeidx, "camxform0", time, 0);
839  myCamxform1 = 0;
840  if (true)
841  graph->evalOpParm(myCamxform1, nodeidx, "camxform1", time, 0);
842  myCamxform2 = 0;
843  if (true)
844  graph->evalOpParm(myCamxform2, nodeidx, "camxform2", time, 0);
845  myCamxform3 = 0;
846  if (true)
847  graph->evalOpParm(myCamxform3, nodeidx, "camxform3", time, 0);
848  myCampos = 0;
849  if (true)
850  graph->evalOpParm(myCampos, nodeidx, "campos", time, 0);
851  myCursorpos = 0;
852  if (true)
853  graph->evalOpParm(myCursorpos, nodeidx, "cursorpos", time, 0);
854  myCursordisplace = 0;
855  if (true)
856  graph->evalOpParm(myCursordisplace, nodeidx, "cursordisplace", time, 0);
857  myRaypos = 0;
858  if (true)
859  graph->evalOpParm(myRaypos, nodeidx, "raypos", time, 0);
860  myRaydir = 0;
861  if (true)
862  graph->evalOpParm(myRaydir, nodeidx, "raydir", time, 0);
863  myStrengthscale = 0;
864  if (true)
865  graph->evalOpParm(myStrengthscale, nodeidx, "strengthscale", time, 0);
866  myButton = 0;
867  if (true)
868  graph->evalOpParm(myButton, nodeidx, "button", time, 0);
869  myShiftkey = false;
870  if (true)
871  graph->evalOpParm(myShiftkey, nodeidx, "shiftkey", time, 0);
872  myCtrlkey = false;
873  if (true)
874  graph->evalOpParm(myCtrlkey, nodeidx, "ctrlkey", time, 0);
875 
876  }
877 
878 
879  void loadFromOpSubclass(const LoadParms &loadparms) override
880  {
881  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
882  }
883 
884 
885  void copyFrom(const OP_NodeParms *src) override
886  {
887  *this = *((const SOP_GuideGroomCoreParms *)src);
888  }
889 
890  template <typename T>
891  void
892  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
893  {
894  if (idx.size() < 1)
895  return;
896  UT_ASSERT(idx.size() == instance.size()+1);
897  if (idx.size() != instance.size()+1)
898  return;
899  switch (idx[0])
900  {
901  case 0:
902  coerceValue(value, myStashnode);
903  break;
904  case 1:
905  coerceValue(value, myGroup);
906  break;
907  case 2:
908  coerceValue(value, myGrouptype);
909  break;
910  case 3:
911  coerceValue(value, myUsemask);
912  break;
913  case 4:
914  coerceValue(value, myMirrorbrush);
915  break;
916  case 5:
917  coerceValue(value, myMirror);
918  break;
919  case 6:
920  coerceValue(value, myMirrorgroup);
921  break;
922  case 7:
923  coerceValue(value, myMirrororigin);
924  break;
925  case 8:
926  coerceValue(value, myMirrordir);
927  break;
928  case 9:
929  coerceValue(value, myTool);
930  break;
931  case 10:
932  coerceValue(value, myRaybias);
933  break;
934  case 11:
935  coerceValue(value, myStrandmode);
936  break;
937  case 12:
938  coerceValue(value, myCollidewithskin);
939  break;
940  case 13:
941  coerceValue(value, myCreateorient);
942  break;
943  case 14:
944  coerceValue(value, myOrientname);
945  break;
946  case 15:
947  coerceValue(value, myOrientup);
948  break;
949  case 16:
950  coerceValue(value, myOrientupattrib);
951  break;
952  case 17:
953  coerceValue(value, myOrientupattribflip);
954  break;
955  case 18:
956  coerceValue(value, myTemplatesourcegroup);
957  break;
958  case 19:
959  coerceValue(value, myWidthoverride);
960  break;
961  case 20:
962  coerceValue(value, myWidth);
963  break;
964  case 21:
965  coerceValue(value, myBrushsurface);
966  break;
967  case 22:
968  coerceValue(value, myUsepartinglines);
969  break;
970  case 23:
971  coerceValue(value, myScreenradius);
972  break;
973  case 24:
974  coerceValue(value, myObjectradius);
975  break;
976  case 25:
977  coerceValue(value, mySoft);
978  break;
979  case 26:
980  coerceValue(value, mySpacing);
981  break;
982  case 27:
983  coerceValue(value, myDensity);
984  break;
985  case 28:
986  coerceValue(value, myBrushmaintainlength);
987  break;
988  case 29:
989  coerceValue(value, myBrushsnaptosurface);
990  break;
991  case 30:
992  coerceValue(value, myBrushbend);
993  break;
994  case 31:
995  coerceValue(value, myBrushbendfalloff);
996  break;
997  case 32:
998  coerceValue(value, myLiftmode);
999  break;
1000  case 33:
1001  coerceValue(value, myLiftangle);
1002  break;
1003  case 34:
1004  coerceValue(value, myAdjustlengthmode);
1005  break;
1006  case 35:
1007  coerceValue(value, myAdjustlengthvalue);
1008  break;
1009  case 36:
1010  coerceValue(value, myAdjustlengthlength);
1011  break;
1012  case 37:
1013  coerceValue(value, myAdjustlengthmethod);
1014  break;
1015  case 38:
1016  coerceValue(value, myMoverotatewithskin);
1017  break;
1018  case 39:
1019  coerceValue(value, mySculptdoconstrain);
1020  break;
1021  case 40:
1022  coerceValue(value, mySculptlockroot);
1023  break;
1024  case 41:
1025  coerceValue(value, mySculptmaintainevensegments);
1026  break;
1027  case 42:
1028  coerceValue(value, mySmoothtargetsmoothness);
1029  break;
1030  case 43:
1031  coerceValue(value, mySmoothposition);
1032  break;
1033  case 44:
1034  coerceValue(value, mySmoothorient);
1035  break;
1036  case 45:
1037  coerceValue(value, myBlurinskinspace);
1038  break;
1039  case 46:
1040  coerceValue(value, myBlurperpoint);
1041  break;
1042  case 47:
1043  coerceValue(value, myBlurshape);
1044  break;
1045  case 48:
1046  coerceValue(value, myBlurlength);
1047  break;
1048  case 49:
1049  coerceValue(value, myBlurorient);
1050  break;
1051  case 50:
1052  coerceValue(value, myCutmode);
1053  break;
1054  case 51:
1055  coerceValue(value, myClumpperpoint);
1056  break;
1057  case 52:
1058  coerceValue(value, myPlantmode);
1059  break;
1060  case 53:
1061  coerceValue(value, myPlantinterpolateguides);
1062  break;
1063  case 54:
1064  coerceValue(value, myPlantinterpolaterelskin);
1065  break;
1066  case 55:
1067  coerceValue(value, myPlantinterpolateorient);
1068  break;
1069  case 56:
1070  coerceValue(value, myPlanttemplatesource);
1071  break;
1072  case 57:
1073  coerceValue(value, myPlantlength);
1074  break;
1075  case 58:
1076  coerceValue(value, myPlantsegcount);
1077  break;
1078  case 59:
1079  coerceValue(value, myDrawonskin);
1080  break;
1081  case 60:
1082  coerceValue(value, myDrawinterpolateorient);
1083  break;
1084  case 61:
1085  coerceValue(value, myDrawtemplatesource);
1086  break;
1087  case 62:
1088  coerceValue(value, myDrawlimitlength);
1089  break;
1090  case 63:
1091  coerceValue(value, myDrawcurvetype);
1092  break;
1093  case 64:
1094  coerceValue(value, myDrawsegmode);
1095  break;
1096  case 65:
1097  coerceValue(value, myDrawsegcount);
1098  break;
1099  case 66:
1100  coerceValue(value, myDrawseglength);
1101  break;
1102  case 67:
1103  coerceValue(value, myOrientbrushupmode);
1104  break;
1105  case 68:
1106  coerceValue(value, myOrientbrushperpoint);
1107  break;
1108  case 69:
1109  coerceValue(value, myPainttemplateallowblending);
1110  break;
1111  case 70:
1112  coerceValue(value, myEditactiveprim);
1113  break;
1114  case 71:
1115  coerceValue(value, myEditsoft);
1116  break;
1117  case 72:
1118  coerceValue(value, myEditsoftmode);
1119  break;
1120  case 73:
1121  coerceValue(value, myEditcurvefrac);
1122  break;
1123  case 74:
1124  coerceValue(value, myEditcurvedist);
1125  break;
1126  case 75:
1127  coerceValue(value, myResamplesegmode);
1128  break;
1129  case 76:
1130  coerceValue(value, myResamplesegcount);
1131  break;
1132  case 77:
1133  coerceValue(value, myResampleseglength);
1134  break;
1135  case 78:
1136  coerceValue(value, myTwistangle);
1137  break;
1138  case 79:
1139  coerceValue(value, myCurvemaskramp);
1140  break;
1141  case 80:
1142  coerceValue(value, myGroom);
1143  break;
1144  case 81:
1145  coerceValue(value, myStrands);
1146  break;
1147  case 82:
1148  coerceValue(value, myStrokes);
1149  break;
1150  case 83:
1151  coerceValue(value, myPreviewutil);
1152  break;
1153  case 84:
1154  coerceValue(value, myPaintmaskpoints);
1155  break;
1156  case 85:
1157  coerceValue(value, myGroupnewprims);
1158  break;
1159  case 86:
1160  coerceValue(value, myNamenewprims);
1161  break;
1162  case 87:
1163  coerceValue(value, myActivegroup);
1164  break;
1165  case 88:
1166  coerceValue(value, myNameattrib);
1167  break;
1168  case 89:
1169  coerceValue(value, myActivename);
1170  break;
1171  case 90:
1172  coerceValue(value, myOverridecolor);
1173  break;
1174  case 91:
1175  coerceValue(value, myColorbyname);
1176  break;
1177  case 92:
1178  coerceValue(value, myDefaultcolor);
1179  break;
1180  case 93:
1181  coerceValue(value, myTemplatecolor);
1182  break;
1183  case 94:
1184  coerceValue(value, myColorseed);
1185  break;
1186  case 95:
1187  if (idx.size() == 1)
1188  coerceValue(value, myFolder_grouplist.entries());
1189  else if (instance[0] < myFolder_grouplist.entries())
1190  {
1191  auto && _data = myFolder_grouplist(instance[0]);
1192  switch (idx[1])
1193  {
1194  case 0:
1195  coerceValue(value, _data.groupcolor);
1196  break;
1197  case 1:
1198  coerceValue(value, _data.groupname);
1199  break;
1200  case 2:
1201  coerceValue(value, _data.groupoptions);
1202  break;
1203 
1204  }
1205  }
1206  break;
1207  case 96:
1208  coerceValue(value, myXord);
1209  break;
1210  case 97:
1211  coerceValue(value, myRord);
1212  break;
1213  case 98:
1214  coerceValue(value, myT);
1215  break;
1216  case 99:
1217  coerceValue(value, myR);
1218  break;
1219  case 100:
1220  coerceValue(value, myS);
1221  break;
1222  case 101:
1223  coerceValue(value, myShear);
1224  break;
1225  case 102:
1226  coerceValue(value, myScale);
1227  break;
1228  case 103:
1229  coerceValue(value, myP);
1230  break;
1231  case 104:
1232  coerceValue(value, myPr);
1233  break;
1234  case 105:
1235  coerceValue(value, myCamxform0);
1236  break;
1237  case 106:
1238  coerceValue(value, myCamxform1);
1239  break;
1240  case 107:
1241  coerceValue(value, myCamxform2);
1242  break;
1243  case 108:
1244  coerceValue(value, myCamxform3);
1245  break;
1246  case 109:
1247  coerceValue(value, myCampos);
1248  break;
1249  case 110:
1250  coerceValue(value, myCursorpos);
1251  break;
1252  case 111:
1253  coerceValue(value, myCursordisplace);
1254  break;
1255  case 112:
1256  coerceValue(value, myRaypos);
1257  break;
1258  case 113:
1259  coerceValue(value, myRaydir);
1260  break;
1261  case 114:
1262  coerceValue(value, myStrengthscale);
1263  break;
1264  case 115:
1265  coerceValue(value, myButton);
1266  break;
1267  case 116:
1268  coerceValue(value, myShiftkey);
1269  break;
1270  case 117:
1271  coerceValue(value, myCtrlkey);
1272  break;
1273 
1274  }
1275  }
1276 
1277  bool isParmColorRamp(exint idx) const override
1278  {
1279  switch (idx)
1280  {
1281 
1282  }
1283  return false;
1284  }
1285 
1286  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
1287  { doGetParmValue(idx, instance, value); }
1288  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
1289  { doGetParmValue(idx, instance, value); }
1290  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
1291  { doGetParmValue(idx, instance, value); }
1292  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
1293  { doGetParmValue(idx, instance, value); }
1294  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
1295  { doGetParmValue(idx, instance, value); }
1296  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
1297  { doGetParmValue(idx, instance, value); }
1298  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
1299  { doGetParmValue(idx, instance, value); }
1300  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
1301  { doGetParmValue(idx, instance, value); }
1302  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
1303  { doGetParmValue(idx, instance, value); }
1304  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
1305  { doGetParmValue(idx, instance, value); }
1306  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
1307  { doGetParmValue(idx, instance, value); }
1308 
1309  template <typename T>
1310  void
1311  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
1312  {
1313  if (idx.size() < 1)
1314  return;
1315  UT_ASSERT(idx.size() == instance.size()+1);
1316  if (idx.size() != instance.size()+1)
1317  return;
1318  switch (idx[0])
1319  {
1320  case 0:
1321  coerceValue(myStashnode, ( ( value ) ));
1322  break;
1323  case 1:
1324  coerceValue(myGroup, ( ( value ) ));
1325  break;
1326  case 2:
1327  coerceValue(myGrouptype, clampMinValue(0, clampMaxValue(4, value ) ));
1328  break;
1329  case 3:
1330  coerceValue(myUsemask, ( ( value ) ));
1331  break;
1332  case 4:
1333  coerceValue(myMirrorbrush, ( ( value ) ));
1334  break;
1335  case 5:
1336  coerceValue(myMirror, ( ( value ) ));
1337  break;
1338  case 6:
1339  coerceValue(myMirrorgroup, ( ( value ) ));
1340  break;
1341  case 7:
1342  coerceValue(myMirrororigin, ( ( value ) ));
1343  break;
1344  case 8:
1345  coerceValue(myMirrordir, ( ( value ) ));
1346  break;
1347  case 9:
1348  coerceValue(myTool, clampMinValue(0, clampMaxValue(24, value ) ));
1349  break;
1350  case 10:
1351  coerceValue(myRaybias, ( ( value ) ));
1352  break;
1353  case 11:
1354  coerceValue(myStrandmode, ( ( value ) ));
1355  break;
1356  case 12:
1357  coerceValue(myCollidewithskin, ( ( value ) ));
1358  break;
1359  case 13:
1360  coerceValue(myCreateorient, ( ( value ) ));
1361  break;
1362  case 14:
1363  coerceValue(myOrientname, ( ( value ) ));
1364  break;
1365  case 15:
1366  coerceValue(myOrientup, ( ( value ) ));
1367  break;
1368  case 16:
1369  coerceValue(myOrientupattrib, ( ( value ) ));
1370  break;
1371  case 17:
1372  coerceValue(myOrientupattribflip, ( ( value ) ));
1373  break;
1374  case 18:
1375  coerceValue(myTemplatesourcegroup, ( ( value ) ));
1376  break;
1377  case 19:
1378  coerceValue(myWidthoverride, ( ( value ) ));
1379  break;
1380  case 20:
1381  coerceValue(myWidth, ( ( value ) ));
1382  break;
1383  case 21:
1384  coerceValue(myBrushsurface, ( ( value ) ));
1385  break;
1386  case 22:
1387  coerceValue(myUsepartinglines, ( ( value ) ));
1388  break;
1389  case 23:
1390  coerceValue(myScreenradius, ( ( value ) ));
1391  break;
1392  case 24:
1393  coerceValue(myObjectradius, ( ( value ) ));
1394  break;
1395  case 25:
1396  coerceValue(mySoft, ( ( value ) ));
1397  break;
1398  case 26:
1399  coerceValue(mySpacing, ( ( value ) ));
1400  break;
1401  case 27:
1402  coerceValue(myDensity, ( ( value ) ));
1403  break;
1404  case 28:
1405  coerceValue(myBrushmaintainlength, ( ( value ) ));
1406  break;
1407  case 29:
1408  coerceValue(myBrushsnaptosurface, ( ( value ) ));
1409  break;
1410  case 30:
1411  coerceValue(myBrushbend, ( ( value ) ));
1412  break;
1413  case 31:
1414  coerceValue(myBrushbendfalloff, ( ( value ) ));
1415  break;
1416  case 32:
1417  coerceValue(myLiftmode, clampMinValue(0, clampMaxValue(1, value ) ));
1418  break;
1419  case 33:
1420  coerceValue(myLiftangle, ( ( value ) ));
1421  break;
1422  case 34:
1423  coerceValue(myAdjustlengthmode, clampMinValue(0, clampMaxValue(1, value ) ));
1424  break;
1425  case 35:
1426  coerceValue(myAdjustlengthvalue, ( ( value ) ));
1427  break;
1428  case 36:
1429  coerceValue(myAdjustlengthlength, ( ( value ) ));
1430  break;
1431  case 37:
1432  coerceValue(myAdjustlengthmethod, clampMinValue(0, clampMaxValue(1, value ) ));
1433  break;
1434  case 38:
1435  coerceValue(myMoverotatewithskin, ( ( value ) ));
1436  break;
1437  case 39:
1438  coerceValue(mySculptdoconstrain, ( ( value ) ));
1439  break;
1440  case 40:
1441  coerceValue(mySculptlockroot, ( ( value ) ));
1442  break;
1443  case 41:
1444  coerceValue(mySculptmaintainevensegments, ( ( value ) ));
1445  break;
1446  case 42:
1447  coerceValue(mySmoothtargetsmoothness, ( ( value ) ));
1448  break;
1449  case 43:
1450  coerceValue(mySmoothposition, ( ( value ) ));
1451  break;
1452  case 44:
1453  coerceValue(mySmoothorient, ( ( value ) ));
1454  break;
1455  case 45:
1456  coerceValue(myBlurinskinspace, ( ( value ) ));
1457  break;
1458  case 46:
1459  coerceValue(myBlurperpoint, ( ( value ) ));
1460  break;
1461  case 47:
1462  coerceValue(myBlurshape, ( ( value ) ));
1463  break;
1464  case 48:
1465  coerceValue(myBlurlength, ( ( value ) ));
1466  break;
1467  case 49:
1468  coerceValue(myBlurorient, ( ( value ) ));
1469  break;
1470  case 50:
1471  coerceValue(myCutmode, clampMinValue(0, clampMaxValue(1, value ) ));
1472  break;
1473  case 51:
1474  coerceValue(myClumpperpoint, ( ( value ) ));
1475  break;
1476  case 52:
1477  coerceValue(myPlantmode, clampMinValue(0, clampMaxValue(1, value ) ));
1478  break;
1479  case 53:
1480  coerceValue(myPlantinterpolateguides, ( ( value ) ));
1481  break;
1482  case 54:
1483  coerceValue(myPlantinterpolaterelskin, ( ( value ) ));
1484  break;
1485  case 55:
1486  coerceValue(myPlantinterpolateorient, ( ( value ) ));
1487  break;
1488  case 56:
1489  coerceValue(myPlanttemplatesource, clampMinValue(0, clampMaxValue(2, value ) ));
1490  break;
1491  case 57:
1492  coerceValue(myPlantlength, ( ( value ) ));
1493  break;
1494  case 58:
1495  coerceValue(myPlantsegcount, ( ( value ) ));
1496  break;
1497  case 59:
1498  coerceValue(myDrawonskin, ( ( value ) ));
1499  break;
1500  case 60:
1501  coerceValue(myDrawinterpolateorient, ( ( value ) ));
1502  break;
1503  case 61:
1504  coerceValue(myDrawtemplatesource, clampMinValue(0, clampMaxValue(2, value ) ));
1505  break;
1506  case 62:
1507  coerceValue(myDrawlimitlength, ( ( value ) ));
1508  break;
1509  case 63:
1510  coerceValue(myDrawcurvetype, clampMinValue(0, clampMaxValue(1, value ) ));
1511  break;
1512  case 64:
1513  coerceValue(myDrawsegmode, clampMinValue(0, clampMaxValue(1, value ) ));
1514  break;
1515  case 65:
1516  coerceValue(myDrawsegcount, ( ( value ) ));
1517  break;
1518  case 66:
1519  coerceValue(myDrawseglength, ( ( value ) ));
1520  break;
1521  case 67:
1522  coerceValue(myOrientbrushupmode, clampMinValue(0, clampMaxValue(3, value ) ));
1523  break;
1524  case 68:
1525  coerceValue(myOrientbrushperpoint, ( ( value ) ));
1526  break;
1527  case 69:
1528  coerceValue(myPainttemplateallowblending, ( ( value ) ));
1529  break;
1530  case 70:
1531  coerceValue(myEditactiveprim, ( ( value ) ));
1532  break;
1533  case 71:
1534  coerceValue(myEditsoft, ( ( value ) ));
1535  break;
1536  case 72:
1537  coerceValue(myEditsoftmode, clampMinValue(0, clampMaxValue(2, value ) ));
1538  break;
1539  case 73:
1540  coerceValue(myEditcurvefrac, ( ( value ) ));
1541  break;
1542  case 74:
1543  coerceValue(myEditcurvedist, ( ( value ) ));
1544  break;
1545  case 75:
1546  coerceValue(myResamplesegmode, clampMinValue(0, clampMaxValue(3, value ) ));
1547  break;
1548  case 76:
1549  coerceValue(myResamplesegcount, ( ( value ) ));
1550  break;
1551  case 77:
1552  coerceValue(myResampleseglength, ( ( value ) ));
1553  break;
1554  case 78:
1555  coerceValue(myTwistangle, ( ( value ) ));
1556  break;
1557  case 79:
1558  coerceValue(myCurvemaskramp, clampMinValue(0, ( value ) ));
1559  break;
1560  case 80:
1561  coerceValue(myGroom, ( ( value ) ));
1562  break;
1563  case 81:
1564  coerceValue(myStrands, ( ( value ) ));
1565  break;
1566  case 82:
1567  coerceValue(myStrokes, ( ( value ) ));
1568  break;
1569  case 83:
1570  coerceValue(myPreviewutil, ( ( value ) ));
1571  break;
1572  case 84:
1573  coerceValue(myPaintmaskpoints, ( ( value ) ));
1574  break;
1575  case 85:
1576  coerceValue(myGroupnewprims, ( ( value ) ));
1577  break;
1578  case 86:
1579  coerceValue(myNamenewprims, ( ( value ) ));
1580  break;
1581  case 87:
1582  coerceValue(myActivegroup, ( ( value ) ));
1583  break;
1584  case 88:
1585  coerceValue(myNameattrib, ( ( value ) ));
1586  break;
1587  case 89:
1588  coerceValue(myActivename, ( ( value ) ));
1589  break;
1590  case 90:
1591  coerceValue(myOverridecolor, ( ( value ) ));
1592  break;
1593  case 91:
1594  coerceValue(myColorbyname, ( ( value ) ));
1595  break;
1596  case 92:
1597  coerceValue(myDefaultcolor, ( ( value ) ));
1598  break;
1599  case 93:
1600  coerceValue(myTemplatecolor, ( ( value ) ));
1601  break;
1602  case 94:
1603  coerceValue(myColorseed, ( ( value ) ));
1604  break;
1605  case 95:
1606  if (idx.size() == 1)
1607  {
1608  exint newsize;
1609  coerceValue(newsize, value);
1610  if (newsize < 0) newsize = 0;
1611  myFolder_grouplist.setSize(newsize);
1612  }
1613  else
1614  {
1615  if (instance[0] < 0)
1616  return;
1617  myFolder_grouplist.setSizeIfNeeded(instance[0]+1);
1618  auto && _data = myFolder_grouplist(instance[0]);
1619  switch (idx[1])
1620  {
1621  case 0:
1622  coerceValue(_data.groupcolor, value);
1623  break;
1624  case 1:
1625  coerceValue(_data.groupname, value);
1626  break;
1627  case 2:
1628  coerceValue(_data.groupoptions, value);
1629  break;
1630 
1631  }
1632  }
1633  break;
1634  case 96:
1635  coerceValue(myXord, clampMinValue(0, clampMaxValue(5, value ) ));
1636  break;
1637  case 97:
1638  coerceValue(myRord, clampMinValue(0, clampMaxValue(5, value ) ));
1639  break;
1640  case 98:
1641  coerceValue(myT, ( ( value ) ));
1642  break;
1643  case 99:
1644  coerceValue(myR, ( ( value ) ));
1645  break;
1646  case 100:
1647  coerceValue(myS, ( ( value ) ));
1648  break;
1649  case 101:
1650  coerceValue(myShear, ( ( value ) ));
1651  break;
1652  case 102:
1653  coerceValue(myScale, ( ( value ) ));
1654  break;
1655  case 103:
1656  coerceValue(myP, ( ( value ) ));
1657  break;
1658  case 104:
1659  coerceValue(myPr, ( ( value ) ));
1660  break;
1661  case 105:
1662  coerceValue(myCamxform0, ( ( value ) ));
1663  break;
1664  case 106:
1665  coerceValue(myCamxform1, ( ( value ) ));
1666  break;
1667  case 107:
1668  coerceValue(myCamxform2, ( ( value ) ));
1669  break;
1670  case 108:
1671  coerceValue(myCamxform3, ( ( value ) ));
1672  break;
1673  case 109:
1674  coerceValue(myCampos, ( ( value ) ));
1675  break;
1676  case 110:
1677  coerceValue(myCursorpos, ( ( value ) ));
1678  break;
1679  case 111:
1680  coerceValue(myCursordisplace, ( ( value ) ));
1681  break;
1682  case 112:
1683  coerceValue(myRaypos, ( ( value ) ));
1684  break;
1685  case 113:
1686  coerceValue(myRaydir, ( ( value ) ));
1687  break;
1688  case 114:
1689  coerceValue(myStrengthscale, ( ( value ) ));
1690  break;
1691  case 115:
1692  coerceValue(myButton, clampMinValue(0, clampMaxValue(2, value ) ));
1693  break;
1694  case 116:
1695  coerceValue(myShiftkey, ( ( value ) ));
1696  break;
1697  case 117:
1698  coerceValue(myCtrlkey, ( ( value ) ));
1699  break;
1700 
1701  }
1702  }
1703 
1704  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
1705  { doSetParmValue(idx, instance, value); }
1706  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
1707  { doSetParmValue(idx, instance, value); }
1708  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
1709  { doSetParmValue(idx, instance, value); }
1710  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
1711  { doSetParmValue(idx, instance, value); }
1712  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
1713  { doSetParmValue(idx, instance, value); }
1714  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
1715  { doSetParmValue(idx, instance, value); }
1716  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
1717  { doSetParmValue(idx, instance, value); }
1718  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
1719  { doSetParmValue(idx, instance, value); }
1720  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
1721  { doSetParmValue(idx, instance, value); }
1722  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
1723  { doSetParmValue(idx, instance, value); }
1724  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
1725  { doSetParmValue(idx, instance, value); }
1726 
1727  exint getNestNumParms(TempIndex idx) const override
1728  {
1729  if (idx.size() == 0)
1730  return 118;
1731  switch (idx[0])
1732  {
1733  case 95:
1734  return 3;
1735 
1736  }
1737  // Invalid
1738  return 0;
1739  }
1740 
1741  const char *getNestParmName(TempIndex fieldnum) const override
1742  {
1743  if (fieldnum.size() < 1)
1744  return 0;
1745  switch (fieldnum[0])
1746  {
1747  case 0:
1748  return "stashnode";
1749  case 1:
1750  return "group";
1751  case 2:
1752  return "grouptype";
1753  case 3:
1754  return "usemask";
1755  case 4:
1756  return "mirrorbrush";
1757  case 5:
1758  return "mirror";
1759  case 6:
1760  return "mirrorgroup";
1761  case 7:
1762  return "mirrororigin";
1763  case 8:
1764  return "mirrordir";
1765  case 9:
1766  return "tool";
1767  case 10:
1768  return "raybias";
1769  case 11:
1770  return "strandmode";
1771  case 12:
1772  return "collidewithskin";
1773  case 13:
1774  return "createorient";
1775  case 14:
1776  return "orientname";
1777  case 15:
1778  return "orientup";
1779  case 16:
1780  return "orientupattrib";
1781  case 17:
1782  return "orientupattribflip";
1783  case 18:
1784  return "templatesourcegroup";
1785  case 19:
1786  return "widthoverride";
1787  case 20:
1788  return "width";
1789  case 21:
1790  return "brushsurface";
1791  case 22:
1792  return "usepartinglines";
1793  case 23:
1794  return "screenradius";
1795  case 24:
1796  return "objectradius";
1797  case 25:
1798  return "soft";
1799  case 26:
1800  return "spacing";
1801  case 27:
1802  return "density";
1803  case 28:
1804  return "brushmaintainlength";
1805  case 29:
1806  return "brushsnaptosurface";
1807  case 30:
1808  return "brushbend";
1809  case 31:
1810  return "brushbendfalloff";
1811  case 32:
1812  return "liftmode";
1813  case 33:
1814  return "liftangle";
1815  case 34:
1816  return "adjustlengthmode";
1817  case 35:
1818  return "adjustlengthvalue";
1819  case 36:
1820  return "adjustlengthlength";
1821  case 37:
1822  return "adjustlengthmethod";
1823  case 38:
1824  return "moverotatewithskin";
1825  case 39:
1826  return "sculptdoconstrain";
1827  case 40:
1828  return "sculptlockroot";
1829  case 41:
1830  return "sculptmaintainevensegments";
1831  case 42:
1832  return "smoothtargetsmoothness";
1833  case 43:
1834  return "smoothposition";
1835  case 44:
1836  return "smoothorient";
1837  case 45:
1838  return "blurinskinspace";
1839  case 46:
1840  return "blurperpoint";
1841  case 47:
1842  return "blurshape";
1843  case 48:
1844  return "blurlength";
1845  case 49:
1846  return "blurorient";
1847  case 50:
1848  return "cutmode";
1849  case 51:
1850  return "clumpperpoint";
1851  case 52:
1852  return "plantmode";
1853  case 53:
1854  return "plantinterpolateguides";
1855  case 54:
1856  return "plantinterpolaterelskin";
1857  case 55:
1858  return "plantinterpolateorient";
1859  case 56:
1860  return "planttemplatesource";
1861  case 57:
1862  return "plantlength";
1863  case 58:
1864  return "plantsegcount";
1865  case 59:
1866  return "drawonskin";
1867  case 60:
1868  return "drawinterpolateorient";
1869  case 61:
1870  return "drawtemplatesource";
1871  case 62:
1872  return "drawlimitlength";
1873  case 63:
1874  return "drawcurvetype";
1875  case 64:
1876  return "drawsegmode";
1877  case 65:
1878  return "drawsegcount";
1879  case 66:
1880  return "drawseglength";
1881  case 67:
1882  return "orientbrushupmode";
1883  case 68:
1884  return "orientbrushperpoint";
1885  case 69:
1886  return "painttemplateallowblending";
1887  case 70:
1888  return "editactiveprim";
1889  case 71:
1890  return "editsoft";
1891  case 72:
1892  return "editsoftmode";
1893  case 73:
1894  return "editcurvefrac";
1895  case 74:
1896  return "editcurvedist";
1897  case 75:
1898  return "resamplesegmode";
1899  case 76:
1900  return "resamplesegcount";
1901  case 77:
1902  return "resampleseglength";
1903  case 78:
1904  return "twistangle";
1905  case 79:
1906  return "curvemaskramp";
1907  case 80:
1908  return "groom";
1909  case 81:
1910  return "strands";
1911  case 82:
1912  return "strokes";
1913  case 83:
1914  return "previewutil";
1915  case 84:
1916  return "paintmaskpoints";
1917  case 85:
1918  return "groupnewprims";
1919  case 86:
1920  return "namenewprims";
1921  case 87:
1922  return "activegroup";
1923  case 88:
1924  return "nameattrib";
1925  case 89:
1926  return "activename";
1927  case 90:
1928  return "overridecolor";
1929  case 91:
1930  return "colorbyname";
1931  case 92:
1932  return "defaultcolor";
1933  case 93:
1934  return "templatecolor";
1935  case 94:
1936  return "colorseed";
1937  case 95:
1938  if (fieldnum.size() == 1)
1939  return "folder_grouplist";
1940  switch (fieldnum[1])
1941  {
1942  case 0:
1943  return "groupcolor#";
1944  case 1:
1945  return "groupname#";
1946  case 2:
1947  return "groupoptions#";
1948 
1949  }
1950  return 0;
1951  case 96:
1952  return "xOrd";
1953  case 97:
1954  return "rOrd";
1955  case 98:
1956  return "t";
1957  case 99:
1958  return "r";
1959  case 100:
1960  return "s";
1961  case 101:
1962  return "shear";
1963  case 102:
1964  return "scale";
1965  case 103:
1966  return "p";
1967  case 104:
1968  return "pr";
1969  case 105:
1970  return "camxform0";
1971  case 106:
1972  return "camxform1";
1973  case 107:
1974  return "camxform2";
1975  case 108:
1976  return "camxform3";
1977  case 109:
1978  return "campos";
1979  case 110:
1980  return "cursorpos";
1981  case 111:
1982  return "cursordisplace";
1983  case 112:
1984  return "raypos";
1985  case 113:
1986  return "raydir";
1987  case 114:
1988  return "strengthscale";
1989  case 115:
1990  return "button";
1991  case 116:
1992  return "shiftkey";
1993  case 117:
1994  return "ctrlkey";
1995 
1996  }
1997  return 0;
1998  }
1999 
2000  ParmType getNestParmType(TempIndex fieldnum) const override
2001  {
2002  if (fieldnum.size() < 1)
2003  return PARM_UNSUPPORTED;
2004  switch (fieldnum[0])
2005  {
2006  case 0:
2007  return PARM_STRING;
2008  case 1:
2009  return PARM_STRING;
2010  case 2:
2011  return PARM_INTEGER;
2012  case 3:
2013  return PARM_INTEGER;
2014  case 4:
2015  return PARM_INTEGER;
2016  case 5:
2017  return PARM_INTEGER;
2018  case 6:
2019  return PARM_STRING;
2020  case 7:
2021  return PARM_VECTOR3;
2022  case 8:
2023  return PARM_VECTOR3;
2024  case 9:
2025  return PARM_INTEGER;
2026  case 10:
2027  return PARM_FLOAT;
2028  case 11:
2029  return PARM_INTEGER;
2030  case 12:
2031  return PARM_INTEGER;
2032  case 13:
2033  return PARM_INTEGER;
2034  case 14:
2035  return PARM_STRING;
2036  case 15:
2037  return PARM_VECTOR3;
2038  case 16:
2039  return PARM_STRING;
2040  case 17:
2041  return PARM_INTEGER;
2042  case 18:
2043  return PARM_STRING;
2044  case 19:
2045  return PARM_INTEGER;
2046  case 20:
2047  return PARM_FLOAT;
2048  case 21:
2049  return PARM_INTEGER;
2050  case 22:
2051  return PARM_INTEGER;
2052  case 23:
2053  return PARM_FLOAT;
2054  case 24:
2055  return PARM_FLOAT;
2056  case 25:
2057  return PARM_FLOAT;
2058  case 26:
2059  return PARM_FLOAT;
2060  case 27:
2061  return PARM_FLOAT;
2062  case 28:
2063  return PARM_FLOAT;
2064  case 29:
2065  return PARM_INTEGER;
2066  case 30:
2067  return PARM_FLOAT;
2068  case 31:
2069  return PARM_FLOAT;
2070  case 32:
2071  return PARM_INTEGER;
2072  case 33:
2073  return PARM_FLOAT;
2074  case 34:
2075  return PARM_INTEGER;
2076  case 35:
2077  return PARM_FLOAT;
2078  case 36:
2079  return PARM_FLOAT;
2080  case 37:
2081  return PARM_INTEGER;
2082  case 38:
2083  return PARM_INTEGER;
2084  case 39:
2085  return PARM_INTEGER;
2086  case 40:
2087  return PARM_INTEGER;
2088  case 41:
2089  return PARM_INTEGER;
2090  case 42:
2091  return PARM_FLOAT;
2092  case 43:
2093  return PARM_INTEGER;
2094  case 44:
2095  return PARM_INTEGER;
2096  case 45:
2097  return PARM_INTEGER;
2098  case 46:
2099  return PARM_INTEGER;
2100  case 47:
2101  return PARM_INTEGER;
2102  case 48:
2103  return PARM_INTEGER;
2104  case 49:
2105  return PARM_INTEGER;
2106  case 50:
2107  return PARM_INTEGER;
2108  case 51:
2109  return PARM_INTEGER;
2110  case 52:
2111  return PARM_INTEGER;
2112  case 53:
2113  return PARM_INTEGER;
2114  case 54:
2115  return PARM_INTEGER;
2116  case 55:
2117  return PARM_INTEGER;
2118  case 56:
2119  return PARM_INTEGER;
2120  case 57:
2121  return PARM_FLOAT;
2122  case 58:
2123  return PARM_INTEGER;
2124  case 59:
2125  return PARM_INTEGER;
2126  case 60:
2127  return PARM_INTEGER;
2128  case 61:
2129  return PARM_INTEGER;
2130  case 62:
2131  return PARM_INTEGER;
2132  case 63:
2133  return PARM_INTEGER;
2134  case 64:
2135  return PARM_INTEGER;
2136  case 65:
2137  return PARM_INTEGER;
2138  case 66:
2139  return PARM_FLOAT;
2140  case 67:
2141  return PARM_INTEGER;
2142  case 68:
2143  return PARM_INTEGER;
2144  case 69:
2145  return PARM_INTEGER;
2146  case 70:
2147  return PARM_INTEGER;
2148  case 71:
2149  return PARM_INTEGER;
2150  case 72:
2151  return PARM_INTEGER;
2152  case 73:
2153  return PARM_FLOAT;
2154  case 74:
2155  return PARM_FLOAT;
2156  case 75:
2157  return PARM_INTEGER;
2158  case 76:
2159  return PARM_INTEGER;
2160  case 77:
2161  return PARM_FLOAT;
2162  case 78:
2163  return PARM_FLOAT;
2164  case 79:
2165  return PARM_RAMP;
2166  case 80:
2167  return PARM_DATA;
2168  case 81:
2169  return PARM_DATA;
2170  case 82:
2171  return PARM_DATA;
2172  case 83:
2173  return PARM_INTEGER;
2174  case 84:
2175  return PARM_INTEGER;
2176  case 85:
2177  return PARM_INTEGER;
2178  case 86:
2179  return PARM_INTEGER;
2180  case 87:
2181  return PARM_STRING;
2182  case 88:
2183  return PARM_STRING;
2184  case 89:
2185  return PARM_STRING;
2186  case 90:
2187  return PARM_INTEGER;
2188  case 91:
2189  return PARM_INTEGER;
2190  case 92:
2191  return PARM_VECTOR3;
2192  case 93:
2193  return PARM_VECTOR3;
2194  case 94:
2195  return PARM_INTEGER;
2196  case 95:
2197  if (fieldnum.size() == 1)
2198  return PARM_MULTIPARM;
2199  switch (fieldnum[1])
2200  {
2201  case 0:
2202  return PARM_VECTOR3;
2203  case 1:
2204  return PARM_STRING;
2205  case 2:
2206  return PARM_INTEGER;
2207 
2208  }
2209  return PARM_UNSUPPORTED;
2210  case 96:
2211  return PARM_INTEGER;
2212  case 97:
2213  return PARM_INTEGER;
2214  case 98:
2215  return PARM_VECTOR3;
2216  case 99:
2217  return PARM_VECTOR3;
2218  case 100:
2219  return PARM_VECTOR3;
2220  case 101:
2221  return PARM_VECTOR3;
2222  case 102:
2223  return PARM_FLOAT;
2224  case 103:
2225  return PARM_VECTOR3;
2226  case 104:
2227  return PARM_VECTOR3;
2228  case 105:
2229  return PARM_VECTOR4;
2230  case 106:
2231  return PARM_VECTOR4;
2232  case 107:
2233  return PARM_VECTOR4;
2234  case 108:
2235  return PARM_VECTOR4;
2236  case 109:
2237  return PARM_VECTOR3;
2238  case 110:
2239  return PARM_VECTOR2;
2240  case 111:
2241  return PARM_VECTOR3;
2242  case 112:
2243  return PARM_VECTOR3;
2244  case 113:
2245  return PARM_VECTOR3;
2246  case 114:
2247  return PARM_FLOAT;
2248  case 115:
2249  return PARM_INTEGER;
2250  case 116:
2251  return PARM_INTEGER;
2252  case 117:
2253  return PARM_INTEGER;
2254 
2255  }
2256  return PARM_UNSUPPORTED;
2257  }
2258 
2259  // Boiler plate to load individual types.
2260  static void loadData(UT_IStream &is, int64 &v)
2261  { is.bread(&v, 1); }
2262  static void loadData(UT_IStream &is, bool &v)
2263  { int64 iv; is.bread(&iv, 1); v = iv; }
2264  static void loadData(UT_IStream &is, fpreal64 &v)
2265  { is.bread<fpreal64>(&v, 1); }
2266  static void loadData(UT_IStream &is, UT_Vector2D &v)
2267  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
2268  static void loadData(UT_IStream &is, UT_Vector3D &v)
2269  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
2270  is.bread<fpreal64>(&v.z(), 1); }
2271  static void loadData(UT_IStream &is, UT_Vector4D &v)
2272  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
2273  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
2274  static void loadData(UT_IStream &is, UT_Matrix2D &v)
2275  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
2276  static void loadData(UT_IStream &is, UT_Matrix3D &v)
2277  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
2278  static void loadData(UT_IStream &is, UT_Matrix4D &v)
2279  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
2280  static void loadData(UT_IStream &is, UT_Vector2I &v)
2281  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
2282  static void loadData(UT_IStream &is, UT_Vector3I &v)
2283  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
2284  is.bread<int64>(&v.z(), 1); }
2285  static void loadData(UT_IStream &is, UT_Vector4I &v)
2286  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
2287  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
2289  { is.bread(v); }
2291  { UT_StringHolder rampdata;
2292  loadData(is, rampdata);
2293  if (rampdata.isstring())
2294  {
2295  v.reset(new UT_Ramp());
2296  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
2297  v->load(istr);
2298  }
2299  else v.reset();
2300  }
2303  loadData(is, data);
2304  if (data.isstring())
2305  {
2306  // Find the data type.
2307  const char *colon = UT_StringWrap(data).findChar(':');
2308  if (colon)
2309  {
2310  int typelen = colon - data.buffer();
2312  type.strncpy(data.buffer(), typelen);
2313  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
2314 
2315  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
2316  }
2317  }
2318  else v.reset();
2319  }
2320 
2321  static void saveData(std::ostream &os, int64 v)
2322  { UTwrite(os, &v); }
2323  static void saveData(std::ostream &os, bool v)
2324  { int64 iv = v; UTwrite(os, &iv); }
2325  static void saveData(std::ostream &os, fpreal64 v)
2326  { UTwrite<fpreal64>(os, &v); }
2327  static void saveData(std::ostream &os, UT_Vector2D v)
2328  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
2329  static void saveData(std::ostream &os, UT_Vector3D v)
2330  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
2331  UTwrite<fpreal64>(os, &v.z()); }
2332  static void saveData(std::ostream &os, UT_Vector4D v)
2333  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
2334  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
2335  static void saveData(std::ostream &os, UT_Matrix2D v)
2336  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) UTwrite<fpreal64>(os, &v(r, c)); }
2337  static void saveData(std::ostream &os, UT_Matrix3D v)
2338  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) UTwrite<fpreal64>(os, &v(r, c)); }
2339  static void saveData(std::ostream &os, UT_Matrix4D v)
2340  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) UTwrite<fpreal64>(os, &v(r, c)); }
2341  static void saveData(std::ostream &os, UT_StringHolder s)
2342  { UT_StringWrap(s).saveBinary(os); }
2343  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
2345  UT_OStringStream ostr;
2346  if (s) s->save(ostr);
2347  result = ostr.str();
2348  saveData(os, result);
2349  }
2350  static void saveData(std::ostream &os, PRM_DataItemHandle s)
2352  UT_OStringStream ostr;
2353  if (s)
2354  {
2355  ostr << s->getDataTypeToken();
2356  ostr << ":";
2357  s->saveBinary(ostr);
2358  }
2359  result = ostr.str();
2360  saveData(os, result);
2361  }
2362 
2363 
2364  void save(std::ostream &os) const
2365  {
2366  int32 v = version();
2367  UTwrite(os, &v);
2368  saveData(os, myStashnode);
2369  saveData(os, myGroup);
2370  saveData(os, myGrouptype);
2371  saveData(os, myUsemask);
2372  saveData(os, myMirrorbrush);
2373  saveData(os, myMirror);
2374  saveData(os, myMirrorgroup);
2375  saveData(os, myMirrororigin);
2376  saveData(os, myMirrordir);
2377  saveData(os, myTool);
2378  saveData(os, myRaybias);
2379  saveData(os, myStrandmode);
2380  saveData(os, myCollidewithskin);
2381  saveData(os, myCreateorient);
2382  saveData(os, myOrientname);
2383  saveData(os, myOrientup);
2384  saveData(os, myOrientupattrib);
2385  saveData(os, myOrientupattribflip);
2386  saveData(os, myTemplatesourcegroup);
2387  saveData(os, myWidthoverride);
2388  saveData(os, myWidth);
2389  saveData(os, myBrushsurface);
2390  saveData(os, myUsepartinglines);
2391  saveData(os, myScreenradius);
2392  saveData(os, myObjectradius);
2393  saveData(os, mySoft);
2394  saveData(os, mySpacing);
2395  saveData(os, myDensity);
2396  saveData(os, myBrushmaintainlength);
2397  saveData(os, myBrushsnaptosurface);
2398  saveData(os, myBrushbend);
2399  saveData(os, myBrushbendfalloff);
2400  saveData(os, myLiftmode);
2401  saveData(os, myLiftangle);
2402  saveData(os, myAdjustlengthmode);
2403  saveData(os, myAdjustlengthvalue);
2404  saveData(os, myAdjustlengthlength);
2405  saveData(os, myAdjustlengthmethod);
2406  saveData(os, myMoverotatewithskin);
2407  saveData(os, mySculptdoconstrain);
2408  saveData(os, mySculptlockroot);
2409  saveData(os, mySculptmaintainevensegments);
2410  saveData(os, mySmoothtargetsmoothness);
2411  saveData(os, mySmoothposition);
2412  saveData(os, mySmoothorient);
2413  saveData(os, myBlurinskinspace);
2414  saveData(os, myBlurperpoint);
2415  saveData(os, myBlurshape);
2416  saveData(os, myBlurlength);
2417  saveData(os, myBlurorient);
2418  saveData(os, myCutmode);
2419  saveData(os, myClumpperpoint);
2420  saveData(os, myPlantmode);
2421  saveData(os, myPlantinterpolateguides);
2422  saveData(os, myPlantinterpolaterelskin);
2423  saveData(os, myPlantinterpolateorient);
2424  saveData(os, myPlanttemplatesource);
2425  saveData(os, myPlantlength);
2426  saveData(os, myPlantsegcount);
2427  saveData(os, myDrawonskin);
2428  saveData(os, myDrawinterpolateorient);
2429  saveData(os, myDrawtemplatesource);
2430  saveData(os, myDrawlimitlength);
2431  saveData(os, myDrawcurvetype);
2432  saveData(os, myDrawsegmode);
2433  saveData(os, myDrawsegcount);
2434  saveData(os, myDrawseglength);
2435  saveData(os, myOrientbrushupmode);
2436  saveData(os, myOrientbrushperpoint);
2437  saveData(os, myPainttemplateallowblending);
2438  saveData(os, myEditactiveprim);
2439  saveData(os, myEditsoft);
2440  saveData(os, myEditsoftmode);
2441  saveData(os, myEditcurvefrac);
2442  saveData(os, myEditcurvedist);
2443  saveData(os, myResamplesegmode);
2444  saveData(os, myResamplesegcount);
2445  saveData(os, myResampleseglength);
2446  saveData(os, myTwistangle);
2447  saveData(os, myCurvemaskramp);
2448  saveData(os, myGroom);
2449  saveData(os, myStrands);
2450  saveData(os, myStrokes);
2451  saveData(os, myPreviewutil);
2452  saveData(os, myPaintmaskpoints);
2453  saveData(os, myGroupnewprims);
2454  saveData(os, myNamenewprims);
2455  saveData(os, myActivegroup);
2456  saveData(os, myNameattrib);
2457  saveData(os, myActivename);
2458  saveData(os, myOverridecolor);
2459  saveData(os, myColorbyname);
2460  saveData(os, myDefaultcolor);
2461  saveData(os, myTemplatecolor);
2462  saveData(os, myColorseed);
2463  {
2464  int64 length = myFolder_grouplist.entries();
2465  UTwrite(os, &length);
2466  for (exint i = 0; i < length; i++)
2467  {
2468  auto && _curentry = myFolder_grouplist(i);
2469  (void) _curentry;
2470  saveData(os, _curentry.groupcolor);
2471  saveData(os, _curentry.groupname);
2472  saveData(os, _curentry.groupoptions);
2473 
2474  }
2475  }
2476  saveData(os, myXord);
2477  saveData(os, myRord);
2478  saveData(os, myT);
2479  saveData(os, myR);
2480  saveData(os, myS);
2481  saveData(os, myShear);
2482  saveData(os, myScale);
2483  saveData(os, myP);
2484  saveData(os, myPr);
2485  saveData(os, myCamxform0);
2486  saveData(os, myCamxform1);
2487  saveData(os, myCamxform2);
2488  saveData(os, myCamxform3);
2489  saveData(os, myCampos);
2490  saveData(os, myCursorpos);
2491  saveData(os, myCursordisplace);
2492  saveData(os, myRaypos);
2493  saveData(os, myRaydir);
2494  saveData(os, myStrengthscale);
2495  saveData(os, myButton);
2496  saveData(os, myShiftkey);
2497  saveData(os, myCtrlkey);
2498 
2499  }
2500 
2501  bool load(UT_IStream &is)
2502  {
2503  int32 v;
2504  is.bread(&v, 1);
2505  if (version() != v)
2506  {
2507  // Fail incompatible versions
2508  return false;
2509  }
2510  loadData(is, myStashnode);
2511  loadData(is, myGroup);
2512  loadData(is, myGrouptype);
2513  loadData(is, myUsemask);
2514  loadData(is, myMirrorbrush);
2515  loadData(is, myMirror);
2516  loadData(is, myMirrorgroup);
2517  loadData(is, myMirrororigin);
2518  loadData(is, myMirrordir);
2519  loadData(is, myTool);
2520  loadData(is, myRaybias);
2521  loadData(is, myStrandmode);
2522  loadData(is, myCollidewithskin);
2523  loadData(is, myCreateorient);
2524  loadData(is, myOrientname);
2525  loadData(is, myOrientup);
2526  loadData(is, myOrientupattrib);
2527  loadData(is, myOrientupattribflip);
2528  loadData(is, myTemplatesourcegroup);
2529  loadData(is, myWidthoverride);
2530  loadData(is, myWidth);
2531  loadData(is, myBrushsurface);
2532  loadData(is, myUsepartinglines);
2533  loadData(is, myScreenradius);
2534  loadData(is, myObjectradius);
2535  loadData(is, mySoft);
2536  loadData(is, mySpacing);
2537  loadData(is, myDensity);
2538  loadData(is, myBrushmaintainlength);
2539  loadData(is, myBrushsnaptosurface);
2540  loadData(is, myBrushbend);
2541  loadData(is, myBrushbendfalloff);
2542  loadData(is, myLiftmode);
2543  loadData(is, myLiftangle);
2544  loadData(is, myAdjustlengthmode);
2545  loadData(is, myAdjustlengthvalue);
2546  loadData(is, myAdjustlengthlength);
2547  loadData(is, myAdjustlengthmethod);
2548  loadData(is, myMoverotatewithskin);
2549  loadData(is, mySculptdoconstrain);
2550  loadData(is, mySculptlockroot);
2551  loadData(is, mySculptmaintainevensegments);
2552  loadData(is, mySmoothtargetsmoothness);
2553  loadData(is, mySmoothposition);
2554  loadData(is, mySmoothorient);
2555  loadData(is, myBlurinskinspace);
2556  loadData(is, myBlurperpoint);
2557  loadData(is, myBlurshape);
2558  loadData(is, myBlurlength);
2559  loadData(is, myBlurorient);
2560  loadData(is, myCutmode);
2561  loadData(is, myClumpperpoint);
2562  loadData(is, myPlantmode);
2563  loadData(is, myPlantinterpolateguides);
2564  loadData(is, myPlantinterpolaterelskin);
2565  loadData(is, myPlantinterpolateorient);
2566  loadData(is, myPlanttemplatesource);
2567  loadData(is, myPlantlength);
2568  loadData(is, myPlantsegcount);
2569  loadData(is, myDrawonskin);
2570  loadData(is, myDrawinterpolateorient);
2571  loadData(is, myDrawtemplatesource);
2572  loadData(is, myDrawlimitlength);
2573  loadData(is, myDrawcurvetype);
2574  loadData(is, myDrawsegmode);
2575  loadData(is, myDrawsegcount);
2576  loadData(is, myDrawseglength);
2577  loadData(is, myOrientbrushupmode);
2578  loadData(is, myOrientbrushperpoint);
2579  loadData(is, myPainttemplateallowblending);
2580  loadData(is, myEditactiveprim);
2581  loadData(is, myEditsoft);
2582  loadData(is, myEditsoftmode);
2583  loadData(is, myEditcurvefrac);
2584  loadData(is, myEditcurvedist);
2585  loadData(is, myResamplesegmode);
2586  loadData(is, myResamplesegcount);
2587  loadData(is, myResampleseglength);
2588  loadData(is, myTwistangle);
2589  loadData(is, myCurvemaskramp);
2590  loadData(is, myGroom);
2591  loadData(is, myStrands);
2592  loadData(is, myStrokes);
2593  loadData(is, myPreviewutil);
2594  loadData(is, myPaintmaskpoints);
2595  loadData(is, myGroupnewprims);
2596  loadData(is, myNamenewprims);
2597  loadData(is, myActivegroup);
2598  loadData(is, myNameattrib);
2599  loadData(is, myActivename);
2600  loadData(is, myOverridecolor);
2601  loadData(is, myColorbyname);
2602  loadData(is, myDefaultcolor);
2603  loadData(is, myTemplatecolor);
2604  loadData(is, myColorseed);
2605  {
2606  int64 length;
2607  is.read(&length, 1);
2608  myFolder_grouplist.setSize(length);
2609  for (exint i = 0; i < length; i++)
2610  {
2611  auto && _curentry = myFolder_grouplist(i);
2612  (void) _curentry;
2613  loadData(is, _curentry.groupcolor);
2614  loadData(is, _curentry.groupname);
2615  loadData(is, _curentry.groupoptions);
2616 
2617  }
2618  }
2619  loadData(is, myXord);
2620  loadData(is, myRord);
2621  loadData(is, myT);
2622  loadData(is, myR);
2623  loadData(is, myS);
2624  loadData(is, myShear);
2625  loadData(is, myScale);
2626  loadData(is, myP);
2627  loadData(is, myPr);
2628  loadData(is, myCamxform0);
2629  loadData(is, myCamxform1);
2630  loadData(is, myCamxform2);
2631  loadData(is, myCamxform3);
2632  loadData(is, myCampos);
2633  loadData(is, myCursorpos);
2634  loadData(is, myCursordisplace);
2635  loadData(is, myRaypos);
2636  loadData(is, myRaydir);
2637  loadData(is, myStrengthscale);
2638  loadData(is, myButton);
2639  loadData(is, myShiftkey);
2640  loadData(is, myCtrlkey);
2641 
2642  return true;
2643  }
2644 
2645  const UT_StringHolder & getStashnode() const { return myStashnode; }
2646  void setStashnode(const UT_StringHolder & val) { myStashnode = val; }
2648  {
2649  SOP_Node *thissop = cookparms.getNode();
2650  if (!thissop) return getStashnode();
2652  OP_Utils::evalOpParm(result, thissop, "stashnode", cookparms.getCookTime(), 0);
2653  return result;
2654  }
2655  const UT_StringHolder & getGroup() const { return myGroup; }
2656  void setGroup(const UT_StringHolder & val) { myGroup = val; }
2658  {
2659  SOP_Node *thissop = cookparms.getNode();
2660  if (!thissop) return getGroup();
2662  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
2663  return result;
2664  }
2665  Grouptype getGrouptype() const { return Grouptype(myGrouptype); }
2666  void setGrouptype(Grouptype val) { myGrouptype = int64(val); }
2668  {
2669  SOP_Node *thissop = cookparms.getNode();
2670  if (!thissop) return getGrouptype();
2671  int64 result;
2672  OP_Utils::evalOpParm(result, thissop, "grouptype", cookparms.getCookTime(), 0);
2673  return Grouptype(result);
2674  }
2675  bool getUsemask() const { return myUsemask; }
2676  void setUsemask(bool val) { myUsemask = val; }
2677  bool opUsemask(const SOP_NodeVerb::CookParms &cookparms) const
2678  {
2679  SOP_Node *thissop = cookparms.getNode();
2680  if (!thissop) return getUsemask();
2681  bool result;
2682  OP_Utils::evalOpParm(result, thissop, "usemask", cookparms.getCookTime(), 0);
2683  return result;
2684  }
2685  bool getMirrorbrush() const { return myMirrorbrush; }
2686  void setMirrorbrush(bool val) { myMirrorbrush = val; }
2687  bool opMirrorbrush(const SOP_NodeVerb::CookParms &cookparms) const
2688  {
2689  SOP_Node *thissop = cookparms.getNode();
2690  if (!thissop) return getMirrorbrush();
2691  bool result;
2692  OP_Utils::evalOpParm(result, thissop, "mirrorbrush", cookparms.getCookTime(), 0);
2693  return result;
2694  }
2695  bool getMirror() const { return myMirror; }
2696  void setMirror(bool val) { myMirror = val; }
2697  bool opMirror(const SOP_NodeVerb::CookParms &cookparms) const
2698  {
2699  SOP_Node *thissop = cookparms.getNode();
2700  if (!thissop) return getMirror();
2701  bool result;
2702  OP_Utils::evalOpParm(result, thissop, "mirror", cookparms.getCookTime(), 0);
2703  return result;
2704  }
2705  const UT_StringHolder & getMirrorgroup() const { return myMirrorgroup; }
2706  void setMirrorgroup(const UT_StringHolder & val) { myMirrorgroup = val; }
2708  {
2709  SOP_Node *thissop = cookparms.getNode();
2710  if (!thissop) return getMirrorgroup();
2712  OP_Utils::evalOpParm(result, thissop, "mirrorgroup", cookparms.getCookTime(), 0);
2713  return result;
2714  }
2715  UT_Vector3D getMirrororigin() const { return myMirrororigin; }
2716  void setMirrororigin(UT_Vector3D val) { myMirrororigin = val; }
2718  {
2719  SOP_Node *thissop = cookparms.getNode();
2720  if (!thissop) return getMirrororigin();
2722  OP_Utils::evalOpParm(result, thissop, "mirrororigin", cookparms.getCookTime(), 0);
2723  return result;
2724  }
2725  UT_Vector3D getMirrordir() const { return myMirrordir; }
2726  void setMirrordir(UT_Vector3D val) { myMirrordir = val; }
2728  {
2729  SOP_Node *thissop = cookparms.getNode();
2730  if (!thissop) return getMirrordir();
2732  OP_Utils::evalOpParm(result, thissop, "mirrordir", cookparms.getCookTime(), 0);
2733  return result;
2734  }
2735  Tool getTool() const { return Tool(myTool); }
2736  void setTool(Tool val) { myTool = int64(val); }
2737  Tool opTool(const SOP_NodeVerb::CookParms &cookparms) const
2738  {
2739  SOP_Node *thissop = cookparms.getNode();
2740  if (!thissop) return getTool();
2741  int64 result;
2742  OP_Utils::evalOpParm(result, thissop, "tool", cookparms.getCookTime(), 0);
2743  return Tool(result);
2744  }
2745  fpreal64 getRaybias() const { return myRaybias; }
2746  void setRaybias(fpreal64 val) { myRaybias = val; }
2748  {
2749  SOP_Node *thissop = cookparms.getNode();
2750  if (!thissop) return getRaybias();
2751  fpreal64 result;
2752  OP_Utils::evalOpParm(result, thissop, "raybias", cookparms.getCookTime(), 0);
2753  return result;
2754  }
2755  bool getStrandmode() const { return myStrandmode; }
2756  void setStrandmode(bool val) { myStrandmode = val; }
2757  bool opStrandmode(const SOP_NodeVerb::CookParms &cookparms) const
2758  {
2759  SOP_Node *thissop = cookparms.getNode();
2760  if (!thissop) return getStrandmode();
2761  bool result;
2762  OP_Utils::evalOpParm(result, thissop, "strandmode", cookparms.getCookTime(), 0);
2763  return result;
2764  }
2765  bool getCollidewithskin() const { return myCollidewithskin; }
2766  void setCollidewithskin(bool val) { myCollidewithskin = val; }
2767  bool opCollidewithskin(const SOP_NodeVerb::CookParms &cookparms) const
2768  {
2769  SOP_Node *thissop = cookparms.getNode();
2770  if (!thissop) return getCollidewithskin();
2771  bool result;
2772  OP_Utils::evalOpParm(result, thissop, "collidewithskin", cookparms.getCookTime(), 0);
2773  return result;
2774  }
2775  bool getCreateorient() const { return myCreateorient; }
2776  void setCreateorient(bool val) { myCreateorient = val; }
2777  bool opCreateorient(const SOP_NodeVerb::CookParms &cookparms) const
2778  {
2779  SOP_Node *thissop = cookparms.getNode();
2780  if (!thissop) return getCreateorient();
2781  bool result;
2782  OP_Utils::evalOpParm(result, thissop, "createorient", cookparms.getCookTime(), 0);
2783  return result;
2784  }
2785  const UT_StringHolder & getOrientname() const { return myOrientname; }
2786  void setOrientname(const UT_StringHolder & val) { myOrientname = val; }
2788  {
2789  SOP_Node *thissop = cookparms.getNode();
2790  if (!thissop) return getOrientname();
2792  OP_Utils::evalOpParm(result, thissop, "orientname", cookparms.getCookTime(), 0);
2793  return result;
2794  }
2795  UT_Vector3D getOrientup() const { return myOrientup; }
2796  void setOrientup(UT_Vector3D val) { myOrientup = val; }
2798  {
2799  SOP_Node *thissop = cookparms.getNode();
2800  if (!thissop) return getOrientup();
2802  OP_Utils::evalOpParm(result, thissop, "orientup", cookparms.getCookTime(), 0);
2803  return result;
2804  }
2805  const UT_StringHolder & getOrientupattrib() const { return myOrientupattrib; }
2806  void setOrientupattrib(const UT_StringHolder & val) { myOrientupattrib = val; }
2808  {
2809  SOP_Node *thissop = cookparms.getNode();
2810  if (!thissop) return getOrientupattrib();
2812  OP_Utils::evalOpParm(result, thissop, "orientupattrib", cookparms.getCookTime(), 0);
2813  return result;
2814  }
2815  bool getOrientupattribflip() const { return myOrientupattribflip; }
2816  void setOrientupattribflip(bool val) { myOrientupattribflip = val; }
2817  bool opOrientupattribflip(const SOP_NodeVerb::CookParms &cookparms) const
2818  {
2819  SOP_Node *thissop = cookparms.getNode();
2820  if (!thissop) return getOrientupattribflip();
2821  bool result;
2822  OP_Utils::evalOpParm(result, thissop, "orientupattribflip", cookparms.getCookTime(), 0);
2823  return result;
2824  }
2825  const UT_StringHolder & getTemplatesourcegroup() const { return myTemplatesourcegroup; }
2826  void setTemplatesourcegroup(const UT_StringHolder & val) { myTemplatesourcegroup = val; }
2828  {
2829  SOP_Node *thissop = cookparms.getNode();
2830  if (!thissop) return getTemplatesourcegroup();
2832  OP_Utils::evalOpParm(result, thissop, "templatesourcegroup", cookparms.getCookTime(), 0);
2833  return result;
2834  }
2835  bool getWidthoverride() const { return myWidthoverride; }
2836  void setWidthoverride(bool val) { myWidthoverride = val; }
2837  bool opWidthoverride(const SOP_NodeVerb::CookParms &cookparms) const
2838  {
2839  SOP_Node *thissop = cookparms.getNode();
2840  if (!thissop) return getWidthoverride();
2841  bool result;
2842  OP_Utils::evalOpParm(result, thissop, "widthoverride", cookparms.getCookTime(), 0);
2843  return result;
2844  }
2845  fpreal64 getWidth() const { return myWidth; }
2846  void setWidth(fpreal64 val) { myWidth = val; }
2847  fpreal64 opWidth(const SOP_NodeVerb::CookParms &cookparms) const
2848  {
2849  SOP_Node *thissop = cookparms.getNode();
2850  if (!thissop) return getWidth();
2851  fpreal64 result;
2852  OP_Utils::evalOpParm(result, thissop, "width", cookparms.getCookTime(), 0);
2853  return result;
2854  }
2855  bool getBrushsurface() const { return myBrushsurface; }
2856  void setBrushsurface(bool val) { myBrushsurface = val; }
2857  bool opBrushsurface(const SOP_NodeVerb::CookParms &cookparms) const
2858  {
2859  SOP_Node *thissop = cookparms.getNode();
2860  if (!thissop) return getBrushsurface();
2861  bool result;
2862  OP_Utils::evalOpParm(result, thissop, "brushsurface", cookparms.getCookTime(), 0);
2863  return result;
2864  }
2865  bool getUsepartinglines() const { return myUsepartinglines; }
2866  void setUsepartinglines(bool val) { myUsepartinglines = val; }
2867  bool opUsepartinglines(const SOP_NodeVerb::CookParms &cookparms) const
2868  {
2869  SOP_Node *thissop = cookparms.getNode();
2870  if (!thissop) return getUsepartinglines();
2871  bool result;
2872  OP_Utils::evalOpParm(result, thissop, "usepartinglines", cookparms.getCookTime(), 0);
2873  return result;
2874  }
2875  fpreal64 getScreenradius() const { return myScreenradius; }
2876  void setScreenradius(fpreal64 val) { myScreenradius = val; }
2878  {
2879  SOP_Node *thissop = cookparms.getNode();
2880  if (!thissop) return getScreenradius();
2881  fpreal64 result;
2882  OP_Utils::evalOpParm(result, thissop, "screenradius", cookparms.getCookTime(), 0);
2883  return result;
2884  }
2885  fpreal64 getObjectradius() const { return myObjectradius; }
2886  void setObjectradius(fpreal64 val) { myObjectradius = val; }
2888  {
2889  SOP_Node *thissop = cookparms.getNode();
2890  if (!thissop) return getObjectradius();
2891  fpreal64 result;
2892  OP_Utils::evalOpParm(result, thissop, "objectradius", cookparms.getCookTime(), 0);
2893  return result;
2894  }
2895  fpreal64 getSoft() const { return mySoft; }
2896  void setSoft(fpreal64 val) { mySoft = val; }
2897  fpreal64 opSoft(const SOP_NodeVerb::CookParms &cookparms) const
2898  {
2899  SOP_Node *thissop = cookparms.getNode();
2900  if (!thissop) return getSoft();
2901  fpreal64 result;
2902  OP_Utils::evalOpParm(result, thissop, "soft", cookparms.getCookTime(), 0);
2903  return result;
2904  }
2905  fpreal64 getSpacing() const { return mySpacing; }
2906  void setSpacing(fpreal64 val) { mySpacing = val; }
2908  {
2909  SOP_Node *thissop = cookparms.getNode();
2910  if (!thissop) return getSpacing();
2911  fpreal64 result;
2912  OP_Utils::evalOpParm(result, thissop, "spacing", cookparms.getCookTime(), 0);
2913  return result;
2914  }
2915  fpreal64 getDensity() const { return myDensity; }
2916  void setDensity(fpreal64 val) { myDensity = val; }
2918  {
2919  SOP_Node *thissop = cookparms.getNode();
2920  if (!thissop) return getDensity();
2921  fpreal64 result;
2922  OP_Utils::evalOpParm(result, thissop, "density", cookparms.getCookTime(), 0);
2923  return result;
2924  }
2925  fpreal64 getBrushmaintainlength() const { return myBrushmaintainlength; }
2926  void setBrushmaintainlength(fpreal64 val) { myBrushmaintainlength = val; }
2928  {
2929  SOP_Node *thissop = cookparms.getNode();
2930  if (!thissop) return getBrushmaintainlength();
2931  fpreal64 result;
2932  OP_Utils::evalOpParm(result, thissop, "brushmaintainlength", cookparms.getCookTime(), 0);
2933  return result;
2934  }
2935  bool getBrushsnaptosurface() const { return myBrushsnaptosurface; }
2936  void setBrushsnaptosurface(bool val) { myBrushsnaptosurface = val; }
2937  bool opBrushsnaptosurface(const SOP_NodeVerb::CookParms &cookparms) const
2938  {
2939  SOP_Node *thissop = cookparms.getNode();
2940  if (!thissop) return getBrushsnaptosurface();
2941  bool result;
2942  OP_Utils::evalOpParm(result, thissop, "brushsnaptosurface", cookparms.getCookTime(), 0);
2943  return result;
2944  }
2945  fpreal64 getBrushbend() const { return myBrushbend; }
2946  void setBrushbend(fpreal64 val) { myBrushbend = val; }
2948  {
2949  SOP_Node *thissop = cookparms.getNode();
2950  if (!thissop) return getBrushbend();
2951  fpreal64 result;
2952  OP_Utils::evalOpParm(result, thissop, "brushbend", cookparms.getCookTime(), 0);
2953  return result;
2954  }
2955  fpreal64 getBrushbendfalloff() const { return myBrushbendfalloff; }
2956  void setBrushbendfalloff(fpreal64 val) { myBrushbendfalloff = val; }
2958  {
2959  SOP_Node *thissop = cookparms.getNode();
2960  if (!thissop) return getBrushbendfalloff();
2961  fpreal64 result;
2962  OP_Utils::evalOpParm(result, thissop, "brushbendfalloff", cookparms.getCookTime(), 0);
2963  return result;
2964  }
2965  Liftmode getLiftmode() const { return Liftmode(myLiftmode); }
2966  void setLiftmode(Liftmode val) { myLiftmode = int64(val); }
2968  {
2969  SOP_Node *thissop = cookparms.getNode();
2970  if (!thissop) return getLiftmode();
2971  int64 result;
2972  OP_Utils::evalOpParm(result, thissop, "liftmode", cookparms.getCookTime(), 0);
2973  return Liftmode(result);
2974  }
2975  fpreal64 getLiftangle() const { return myLiftangle; }
2976  void setLiftangle(fpreal64 val) { myLiftangle = val; }
2978  {
2979  SOP_Node *thissop = cookparms.getNode();
2980  if (!thissop) return getLiftangle();
2981  fpreal64 result;
2982  OP_Utils::evalOpParm(result, thissop, "liftangle", cookparms.getCookTime(), 0);
2983  return result;
2984  }
2985  Adjustlengthmode getAdjustlengthmode() const { return Adjustlengthmode(myAdjustlengthmode); }
2986  void setAdjustlengthmode(Adjustlengthmode val) { myAdjustlengthmode = int64(val); }
2988  {
2989  SOP_Node *thissop = cookparms.getNode();
2990  if (!thissop) return getAdjustlengthmode();
2991  int64 result;
2992  OP_Utils::evalOpParm(result, thissop, "adjustlengthmode", cookparms.getCookTime(), 0);
2993  return Adjustlengthmode(result);
2994  }
2995  fpreal64 getAdjustlengthvalue() const { return myAdjustlengthvalue; }
2996  void setAdjustlengthvalue(fpreal64 val) { myAdjustlengthvalue = val; }
2998  {
2999  SOP_Node *thissop = cookparms.getNode();
3000  if (!thissop) return getAdjustlengthvalue();
3001  fpreal64 result;
3002  OP_Utils::evalOpParm(result, thissop, "adjustlengthvalue", cookparms.getCookTime(), 0);
3003  return result;
3004  }
3005  fpreal64 getAdjustlengthlength() const { return myAdjustlengthlength; }
3006  void setAdjustlengthlength(fpreal64 val) { myAdjustlengthlength = val; }
3008  {
3009  SOP_Node *thissop = cookparms.getNode();
3010  if (!thissop) return getAdjustlengthlength();
3011  fpreal64 result;
3012  OP_Utils::evalOpParm(result, thissop, "adjustlengthlength", cookparms.getCookTime(), 0);
3013  return result;
3014  }
3015  Adjustlengthmethod getAdjustlengthmethod() const { return Adjustlengthmethod(myAdjustlengthmethod); }
3016  void setAdjustlengthmethod(Adjustlengthmethod val) { myAdjustlengthmethod = int64(val); }
3018  {
3019  SOP_Node *thissop = cookparms.getNode();
3020  if (!thissop) return getAdjustlengthmethod();
3021  int64 result;
3022  OP_Utils::evalOpParm(result, thissop, "adjustlengthmethod", cookparms.getCookTime(), 0);
3023  return Adjustlengthmethod(result);
3024  }
3025  bool getMoverotatewithskin() const { return myMoverotatewithskin; }
3026  void setMoverotatewithskin(bool val) { myMoverotatewithskin = val; }
3027  bool opMoverotatewithskin(const SOP_NodeVerb::CookParms &cookparms) const
3028  {
3029  SOP_Node *thissop = cookparms.getNode();
3030  if (!thissop) return getMoverotatewithskin();
3031  bool result;
3032  OP_Utils::evalOpParm(result, thissop, "moverotatewithskin", cookparms.getCookTime(), 0);
3033  return result;
3034  }
3035  bool getSculptdoconstrain() const { return mySculptdoconstrain; }
3036  void setSculptdoconstrain(bool val) { mySculptdoconstrain = val; }
3037  bool opSculptdoconstrain(const SOP_NodeVerb::CookParms &cookparms) const
3038  {
3039  SOP_Node *thissop = cookparms.getNode();
3040  if (!thissop) return getSculptdoconstrain();
3041  bool result;
3042  OP_Utils::evalOpParm(result, thissop, "sculptdoconstrain", cookparms.getCookTime(), 0);
3043  return result;
3044  }
3045  bool getSculptlockroot() const { return mySculptlockroot; }
3046  void setSculptlockroot(bool val) { mySculptlockroot = val; }
3047  bool opSculptlockroot(const SOP_NodeVerb::CookParms &cookparms) const
3048  {
3049  SOP_Node *thissop = cookparms.getNode();
3050  if (!thissop) return getSculptlockroot();
3051  bool result;
3052  OP_Utils::evalOpParm(result, thissop, "sculptlockroot", cookparms.getCookTime(), 0);
3053  return result;
3054  }
3055  bool getSculptmaintainevensegments() const { return mySculptmaintainevensegments; }
3056  void setSculptmaintainevensegments(bool val) { mySculptmaintainevensegments = val; }
3058  {
3059  SOP_Node *thissop = cookparms.getNode();
3060  if (!thissop) return getSculptmaintainevensegments();
3061  bool result;
3062  OP_Utils::evalOpParm(result, thissop, "sculptmaintainevensegments", cookparms.getCookTime(), 0);
3063  return result;
3064  }
3065  fpreal64 getSmoothtargetsmoothness() const { return mySmoothtargetsmoothness; }
3066  void setSmoothtargetsmoothness(fpreal64 val) { mySmoothtargetsmoothness = val; }
3068  {
3069  SOP_Node *thissop = cookparms.getNode();
3070  if (!thissop) return getSmoothtargetsmoothness();
3071  fpreal64 result;
3072  OP_Utils::evalOpParm(result, thissop, "smoothtargetsmoothness", cookparms.getCookTime(), 0);
3073  return result;
3074  }
3075  bool getSmoothposition() const { return mySmoothposition; }
3076  void setSmoothposition(bool val) { mySmoothposition = val; }
3077  bool opSmoothposition(const SOP_NodeVerb::CookParms &cookparms) const
3078  {
3079  SOP_Node *thissop = cookparms.getNode();
3080  if (!thissop) return getSmoothposition();
3081  bool result;
3082  OP_Utils::evalOpParm(result, thissop, "smoothposition", cookparms.getCookTime(), 0);
3083  return result;
3084  }
3085  bool getSmoothorient() const { return mySmoothorient; }
3086  void setSmoothorient(bool val) { mySmoothorient = val; }
3087  bool opSmoothorient(const SOP_NodeVerb::CookParms &cookparms) const
3088  {
3089  SOP_Node *thissop = cookparms.getNode();
3090  if (!thissop) return getSmoothorient();
3091  bool result;
3092  OP_Utils::evalOpParm(result, thissop, "smoothorient", cookparms.getCookTime(), 0);
3093  return result;
3094  }
3095  bool getBlurinskinspace() const { return myBlurinskinspace; }
3096  void setBlurinskinspace(bool val) { myBlurinskinspace = val; }
3097  bool opBlurinskinspace(const SOP_NodeVerb::CookParms &cookparms) const
3098  {
3099  SOP_Node *thissop = cookparms.getNode();
3100  if (!thissop) return getBlurinskinspace();
3101  bool result;
3102  OP_Utils::evalOpParm(result, thissop, "blurinskinspace", cookparms.getCookTime(), 0);
3103  return result;
3104  }
3105  bool getBlurperpoint() const { return myBlurperpoint; }
3106  void setBlurperpoint(bool val) { myBlurperpoint = val; }
3107  bool opBlurperpoint(const SOP_NodeVerb::CookParms &cookparms) const
3108  {
3109  SOP_Node *thissop = cookparms.getNode();
3110  if (!thissop) return getBlurperpoint();
3111  bool result;
3112  OP_Utils::evalOpParm(result, thissop, "blurperpoint", cookparms.getCookTime(), 0);
3113  return result;
3114  }
3115  bool getBlurshape() const { return myBlurshape; }
3116  void setBlurshape(bool val) { myBlurshape = val; }
3117  bool opBlurshape(const SOP_NodeVerb::CookParms &cookparms) const
3118  {
3119  SOP_Node *thissop = cookparms.getNode();
3120  if (!thissop) return getBlurshape();
3121  bool result;
3122  OP_Utils::evalOpParm(result, thissop, "blurshape", cookparms.getCookTime(), 0);
3123  return result;
3124  }
3125  bool getBlurlength() const { return myBlurlength; }
3126  void setBlurlength(bool val) { myBlurlength = val; }
3127  bool opBlurlength(const SOP_NodeVerb::CookParms &cookparms) const
3128  {
3129  SOP_Node *thissop = cookparms.getNode();
3130  if (!thissop) return getBlurlength();
3131  bool result;
3132  OP_Utils::evalOpParm(result, thissop, "blurlength", cookparms.getCookTime(), 0);
3133  return result;
3134  }
3135  bool getBlurorient() const { return myBlurorient; }
3136  void setBlurorient(bool val) { myBlurorient = val; }
3137  bool opBlurorient(const SOP_NodeVerb::CookParms &cookparms) const
3138  {
3139  SOP_Node *thissop = cookparms.getNode();
3140  if (!thissop) return getBlurorient();
3141  bool result;
3142  OP_Utils::evalOpParm(result, thissop, "blurorient", cookparms.getCookTime(), 0);
3143  return result;
3144  }
3145  Cutmode getCutmode() const { return Cutmode(myCutmode); }
3146  void setCutmode(Cutmode val) { myCutmode = int64(val); }
3148  {
3149  SOP_Node *thissop = cookparms.getNode();
3150  if (!thissop) return getCutmode();
3151  int64 result;
3152  OP_Utils::evalOpParm(result, thissop, "cutmode", cookparms.getCookTime(), 0);
3153  return Cutmode(result);
3154  }
3155  bool getClumpperpoint() const { return myClumpperpoint; }
3156  void setClumpperpoint(bool val) { myClumpperpoint = val; }
3157  bool opClumpperpoint(const SOP_NodeVerb::CookParms &cookparms) const
3158  {
3159  SOP_Node *thissop = cookparms.getNode();
3160  if (!thissop) return getClumpperpoint();
3161  bool result;
3162  OP_Utils::evalOpParm(result, thissop, "clumpperpoint", cookparms.getCookTime(), 0);
3163  return result;
3164  }
3165  Plantmode getPlantmode() const { return Plantmode(myPlantmode); }
3166  void setPlantmode(Plantmode val) { myPlantmode = int64(val); }
3168  {
3169  SOP_Node *thissop = cookparms.getNode();
3170  if (!thissop) return getPlantmode();
3171  int64 result;
3172  OP_Utils::evalOpParm(result, thissop, "plantmode", cookparms.getCookTime(), 0);
3173  return Plantmode(result);
3174  }
3175  bool getPlantinterpolateguides() const { return myPlantinterpolateguides; }
3176  void setPlantinterpolateguides(bool val) { myPlantinterpolateguides = val; }
3178  {
3179  SOP_Node *thissop = cookparms.getNode();
3180  if (!thissop) return getPlantinterpolateguides();
3181  bool result;
3182  OP_Utils::evalOpParm(result, thissop, "plantinterpolateguides", cookparms.getCookTime(), 0);
3183  return result;
3184  }
3185  bool getPlantinterpolaterelskin() const { return myPlantinterpolaterelskin; }
3186  void setPlantinterpolaterelskin(bool val) { myPlantinterpolaterelskin = val; }
3188  {
3189  SOP_Node *thissop = cookparms.getNode();
3190  if (!thissop) return getPlantinterpolaterelskin();
3191  bool result;
3192  OP_Utils::evalOpParm(result, thissop, "plantinterpolaterelskin", cookparms.getCookTime(), 0);
3193  return result;
3194  }
3195  bool getPlantinterpolateorient() const { return myPlantinterpolateorient; }
3196  void setPlantinterpolateorient(bool val) { myPlantinterpolateorient = val; }
3198  {
3199  SOP_Node *thissop = cookparms.getNode();
3200  if (!thissop) return getPlantinterpolateorient();
3201  bool result;
3202  OP_Utils::evalOpParm(result, thissop, "plantinterpolateorient", cookparms.getCookTime(), 0);
3203  return result;
3204  }
3205  Planttemplatesource getPlanttemplatesource() const { return Planttemplatesource(myPlanttemplatesource); }
3206  void setPlanttemplatesource(Planttemplatesource val) { myPlanttemplatesource = int64(val); }
3208  {
3209  SOP_Node *thissop = cookparms.getNode();
3210  if (!thissop) return getPlanttemplatesource();
3211  int64 result;
3212  OP_Utils::evalOpParm(result, thissop, "planttemplatesource", cookparms.getCookTime(), 0);
3213  return Planttemplatesource(result);
3214  }
3215  fpreal64 getPlantlength() const { return myPlantlength; }
3216  void setPlantlength(fpreal64 val) { myPlantlength = val; }
3218  {
3219  SOP_Node *thissop = cookparms.getNode();
3220  if (!thissop) return getPlantlength();
3221  fpreal64 result;
3222  OP_Utils::evalOpParm(result, thissop, "plantlength", cookparms.getCookTime(), 0);
3223  return result;
3224  }
3225  int64 getPlantsegcount() const { return myPlantsegcount; }
3226  void setPlantsegcount(int64 val) { myPlantsegcount = val; }
3228  {
3229  SOP_Node *thissop = cookparms.getNode();
3230  if (!thissop) return getPlantsegcount();
3231  int64 result;
3232  OP_Utils::evalOpParm(result, thissop, "plantsegcount", cookparms.getCookTime(), 0);
3233  return result;
3234  }
3235  bool getDrawonskin() const { return myDrawonskin; }
3236  void setDrawonskin(bool val) { myDrawonskin = val; }
3237  bool opDrawonskin(const SOP_NodeVerb::CookParms &cookparms) const
3238  {
3239  SOP_Node *thissop = cookparms.getNode();
3240  if (!thissop) return getDrawonskin();
3241  bool result;
3242  OP_Utils::evalOpParm(result, thissop, "drawonskin", cookparms.getCookTime(), 0);
3243  return result;
3244  }
3245  bool getDrawinterpolateorient() const { return myDrawinterpolateorient; }
3246  void setDrawinterpolateorient(bool val) { myDrawinterpolateorient = val; }
3248  {
3249  SOP_Node *thissop = cookparms.getNode();
3250  if (!thissop) return getDrawinterpolateorient();
3251  bool result;
3252  OP_Utils::evalOpParm(result, thissop, "drawinterpolateorient", cookparms.getCookTime(), 0);
3253  return result;
3254  }
3255  Drawtemplatesource getDrawtemplatesource() const { return Drawtemplatesource(myDrawtemplatesource); }
3256  void setDrawtemplatesource(Drawtemplatesource val) { myDrawtemplatesource = int64(val); }
3258  {
3259  SOP_Node *thissop = cookparms.getNode();
3260  if (!thissop) return getDrawtemplatesource();
3261  int64 result;
3262  OP_Utils::evalOpParm(result, thissop, "drawtemplatesource", cookparms.getCookTime(), 0);
3263  return Drawtemplatesource(result);
3264  }
3265  bool getDrawlimitlength() const { return myDrawlimitlength; }
3266  void setDrawlimitlength(bool val) { myDrawlimitlength = val; }
3267  bool opDrawlimitlength(const SOP_NodeVerb::CookParms &cookparms) const
3268  {
3269  SOP_Node *thissop = cookparms.getNode();
3270  if (!thissop) return getDrawlimitlength();
3271  bool result;
3272  OP_Utils::evalOpParm(result, thissop, "drawlimitlength", cookparms.getCookTime(), 0);
3273  return result;
3274  }
3275  Drawcurvetype getDrawcurvetype() const { return Drawcurvetype(myDrawcurvetype); }
3276  void setDrawcurvetype(Drawcurvetype val) { myDrawcurvetype = int64(val); }
3278  {
3279  SOP_Node *thissop = cookparms.getNode();
3280  if (!thissop) return getDrawcurvetype();
3281  int64 result;
3282  OP_Utils::evalOpParm(result, thissop, "drawcurvetype", cookparms.getCookTime(), 0);
3283  return Drawcurvetype(result);
3284  }
3285  Drawsegmode getDrawsegmode() const { return Drawsegmode(myDrawsegmode); }
3286  void setDrawsegmode(Drawsegmode val) { myDrawsegmode = int64(val); }
3288  {
3289  SOP_Node *thissop = cookparms.getNode();
3290  if (!thissop) return getDrawsegmode();
3291  int64 result;
3292  OP_Utils::evalOpParm(result, thissop, "drawsegmode", cookparms.getCookTime(), 0);
3293  return Drawsegmode(result);
3294  }
3295  int64 getDrawsegcount() const { return myDrawsegcount; }
3296  void setDrawsegcount(int64 val) { myDrawsegcount = val; }
3298  {
3299  SOP_Node *thissop = cookparms.getNode();
3300  if (!thissop) return getDrawsegcount();
3301  int64 result;
3302  OP_Utils::evalOpParm(result, thissop, "drawsegcount", cookparms.getCookTime(), 0);
3303  return result;
3304  }
3305  fpreal64 getDrawseglength() const { return myDrawseglength; }
3306  void setDrawseglength(fpreal64 val) { myDrawseglength = val; }
3308  {
3309  SOP_Node *thissop = cookparms.getNode();
3310  if (!thissop) return getDrawseglength();
3311  fpreal64 result;
3312  OP_Utils::evalOpParm(result, thissop, "drawseglength", cookparms.getCookTime(), 0);
3313  return result;
3314  }
3315  Orientbrushupmode getOrientbrushupmode() const { return Orientbrushupmode(myOrientbrushupmode); }
3316  void setOrientbrushupmode(Orientbrushupmode val) { myOrientbrushupmode = int64(val); }
3318  {
3319  SOP_Node *thissop = cookparms.getNode();
3320  if (!thissop) return getOrientbrushupmode();
3321  int64 result;
3322  OP_Utils::evalOpParm(result, thissop, "orientbrushupmode", cookparms.getCookTime(), 0);
3323  return Orientbrushupmode(result);
3324  }
3325  bool getOrientbrushperpoint() const { return myOrientbrushperpoint; }
3326  void setOrientbrushperpoint(bool val) { myOrientbrushperpoint = val; }
3327  bool opOrientbrushperpoint(const SOP_NodeVerb::CookParms &cookparms) const
3328  {
3329  SOP_Node *thissop = cookparms.getNode();
3330  if (!thissop) return getOrientbrushperpoint();
3331  bool result;
3332  OP_Utils::evalOpParm(result, thissop, "orientbrushperpoint", cookparms.getCookTime(), 0);
3333  return result;
3334  }
3335  bool getPainttemplateallowblending() const { return myPainttemplateallowblending; }
3336  void setPainttemplateallowblending(bool val) { myPainttemplateallowblending = val; }
3338  {
3339  SOP_Node *thissop = cookparms.getNode();
3340  if (!thissop) return getPainttemplateallowblending();
3341  bool result;
3342  OP_Utils::evalOpParm(result, thissop, "painttemplateallowblending", cookparms.getCookTime(), 0);
3343  return result;
3344  }
3345  int64 getEditactiveprim() const { return myEditactiveprim; }
3346  void setEditactiveprim(int64 val) { myEditactiveprim = val; }
3348  {
3349  SOP_Node *thissop = cookparms.getNode();
3350  if (!thissop) return getEditactiveprim();
3351  int64 result;
3352  OP_Utils::evalOpParm(result, thissop, "editactiveprim", cookparms.getCookTime(), 0);
3353  return result;
3354  }
3355  bool getEditsoft() const { return myEditsoft; }
3356  void setEditsoft(bool val) { myEditsoft = val; }
3357  bool opEditsoft(const SOP_NodeVerb::CookParms &cookparms) const
3358  {
3359  SOP_Node *thissop = cookparms.getNode();
3360  if (!thissop) return getEditsoft();
3361  bool result;
3362  OP_Utils::evalOpParm(result, thissop, "editsoft", cookparms.getCookTime(), 0);
3363  return result;
3364  }
3365  Editsoftmode getEditsoftmode() const { return Editsoftmode(myEditsoftmode); }
3366  void setEditsoftmode(Editsoftmode val) { myEditsoftmode = int64(val); }
3368  {
3369  SOP_Node *thissop = cookparms.getNode();
3370  if (!thissop) return getEditsoftmode();
3371  int64 result;
3372  OP_Utils::evalOpParm(result, thissop, "editsoftmode", cookparms.getCookTime(), 0);
3373  return Editsoftmode(result);
3374  }
3375  fpreal64 getEditcurvefrac() const { return myEditcurvefrac; }
3376  void setEditcurvefrac(fpreal64 val) { myEditcurvefrac = val; }
3378  {
3379  SOP_Node *thissop = cookparms.getNode();
3380  if (!thissop) return getEditcurvefrac();
3381  fpreal64 result;
3382  OP_Utils::evalOpParm(result, thissop, "editcurvefrac", cookparms.getCookTime(), 0);
3383  return result;
3384  }
3385  fpreal64 getEditcurvedist() const { return myEditcurvedist; }
3386  void setEditcurvedist(fpreal64 val) { myEditcurvedist = val; }
3388  {
3389  SOP_Node *thissop = cookparms.getNode();
3390  if (!thissop) return getEditcurvedist();
3391  fpreal64 result;
3392  OP_Utils::evalOpParm(result, thissop, "editcurvedist", cookparms.getCookTime(), 0);
3393  return result;
3394  }
3395  Resamplesegmode getResamplesegmode() const { return Resamplesegmode(myResamplesegmode); }
3396  void setResamplesegmode(Resamplesegmode val) { myResamplesegmode = int64(val); }
3398  {
3399  SOP_Node *thissop = cookparms.getNode();
3400  if (!thissop) return getResamplesegmode();
3401  int64 result;
3402  OP_Utils::evalOpParm(result, thissop, "resamplesegmode", cookparms.getCookTime(), 0);
3403  return Resamplesegmode(result);
3404  }
3405  int64 getResamplesegcount() const { return myResamplesegcount; }
3406  void setResamplesegcount(int64 val) { myResamplesegcount = val; }
3408  {
3409  SOP_Node *thissop = cookparms.getNode();
3410  if (!thissop) return getResamplesegcount();
3411  int64 result;
3412  OP_Utils::evalOpParm(result, thissop, "resamplesegcount", cookparms.getCookTime(), 0);
3413  return result;
3414  }
3415  fpreal64 getResampleseglength() const { return myResampleseglength; }
3416  void setResampleseglength(fpreal64 val) { myResampleseglength = val; }
3418  {
3419  SOP_Node *thissop = cookparms.getNode();
3420  if (!thissop) return getResampleseglength();
3421  fpreal64 result;
3422  OP_Utils::evalOpParm(result, thissop, "resampleseglength", cookparms.getCookTime(), 0);
3423  return result;
3424  }
3425  fpreal64 getTwistangle() const { return myTwistangle; }
3426  void setTwistangle(fpreal64 val) { myTwistangle = val; }
3428  {
3429  SOP_Node *thissop = cookparms.getNode();
3430  if (!thissop) return getTwistangle();
3431  fpreal64 result;
3432  OP_Utils::evalOpParm(result, thissop, "twistangle", cookparms.getCookTime(), 0);
3433  return result;
3434  }
3435  UT_SharedPtr<UT_Ramp> getCurvemaskramp() const { return myCurvemaskramp; }
3436  void setCurvemaskramp(UT_SharedPtr<UT_Ramp> val) { myCurvemaskramp = val; }
3438  {
3439  SOP_Node *thissop = cookparms.getNode();
3440  if (!thissop) return getCurvemaskramp();
3442  OP_Utils::evalOpParm(result, thissop, "curvemaskramp", cookparms.getCookTime(), 0);
3443  return result;
3444  }
3445  PRM_DataItemHandle getGroom() const { return myGroom; }
3446  void setGroom(PRM_DataItemHandle val) { myGroom = val; }
3448  {
3449  SOP_Node *thissop = cookparms.getNode();
3450  if (!thissop) return getGroom();
3452  OP_Utils::evalOpParm(result, thissop, "groom", cookparms.getCookTime(), 0);
3453  return result;
3454  }
3455  PRM_DataItemHandle getStrands() const { return myStrands; }
3456  void setStrands(PRM_DataItemHandle val) { myStrands = val; }
3458  {
3459  SOP_Node *thissop = cookparms.getNode();
3460  if (!thissop) return getStrands();
3462  OP_Utils::evalOpParm(result, thissop, "strands", cookparms.getCookTime(), 0);
3463  return result;
3464  }
3465  PRM_DataItemHandle getStrokes() const { return myStrokes; }
3466  void setStrokes(PRM_DataItemHandle val) { myStrokes = val; }
3468  {
3469  SOP_Node *thissop = cookparms.getNode();
3470  if (!thissop) return getStrokes();
3472  OP_Utils::evalOpParm(result, thissop, "strokes", cookparms.getCookTime(), 0);
3473  return result;
3474  }
3475  bool getPreviewutil() const { return myPreviewutil; }
3476  void setPreviewutil(bool val) { myPreviewutil = val; }
3477  bool opPreviewutil(const SOP_NodeVerb::CookParms &cookparms) const
3478  {
3479  SOP_Node *thissop = cookparms.getNode();
3480  if (!thissop) return getPreviewutil();
3481  bool result;
3482  OP_Utils::evalOpParm(result, thissop, "previewutil", cookparms.getCookTime(), 0);
3483  return result;
3484  }
3485  bool getPaintmaskpoints() const { return myPaintmaskpoints; }
3486  void setPaintmaskpoints(bool val) { myPaintmaskpoints = val; }
3487  bool opPaintmaskpoints(const SOP_NodeVerb::CookParms &cookparms) const
3488  {
3489  SOP_Node *thissop = cookparms.getNode();
3490  if (!thissop) return getPaintmaskpoints();
3491  bool result;
3492  OP_Utils::evalOpParm(result, thissop, "paintmaskpoints", cookparms.getCookTime(), 0);
3493  return result;
3494  }
3495  bool getGroupnewprims() const { return myGroupnewprims; }
3496  void setGroupnewprims(bool val) { myGroupnewprims = val; }
3497  bool opGroupnewprims(const SOP_NodeVerb::CookParms &cookparms) const
3498  {
3499  SOP_Node *thissop = cookparms.getNode();
3500  if (!thissop) return getGroupnewprims();
3501  bool result;
3502  OP_Utils::evalOpParm(result, thissop, "groupnewprims", cookparms.getCookTime(), 0);
3503  return result;
3504  }
3505  bool getNamenewprims() const { return myNamenewprims; }
3506  void setNamenewprims(bool val) { myNamenewprims = val; }
3507  bool opNamenewprims(const SOP_NodeVerb::CookParms &cookparms) const
3508  {
3509  SOP_Node *thissop = cookparms.getNode();
3510  if (!thissop) return getNamenewprims();
3511  bool result;
3512  OP_Utils::evalOpParm(result, thissop, "namenewprims", cookparms.getCookTime(), 0);
3513  return result;
3514  }
3515  const UT_StringHolder & getActivegroup() const { return myActivegroup; }
3516  void setActivegroup(const UT_StringHolder & val) { myActivegroup = val; }
3518  {
3519  SOP_Node *thissop = cookparms.getNode();
3520  if (!thissop) return getActivegroup();
3522  OP_Utils::evalOpParm(result, thissop, "activegroup", cookparms.getCookTime(), 0);
3523  return result;
3524  }
3525  const UT_StringHolder & getNameattrib() const { return myNameattrib; }
3526  void setNameattrib(const UT_StringHolder & val) { myNameattrib = val; }
3528  {
3529  SOP_Node *thissop = cookparms.getNode();
3530  if (!thissop) return getNameattrib();
3532  OP_Utils::evalOpParm(result, thissop, "nameattrib", cookparms.getCookTime(), 0);
3533  return result;
3534  }
3535  const UT_StringHolder & getActivename() const { return myActivename; }
3536  void setActivename(const UT_StringHolder & val) { myActivename = val; }
3538  {
3539  SOP_Node *thissop = cookparms.getNode();
3540  if (!thissop) return getActivename();
3542  OP_Utils::evalOpParm(result, thissop, "activename", cookparms.getCookTime(), 0);
3543  return result;
3544  }
3545  bool getOverridecolor() const { return myOverridecolor; }
3546  void setOverridecolor(bool val) { myOverridecolor = val; }
3547  bool opOverridecolor(const SOP_NodeVerb::CookParms &cookparms) const
3548  {
3549  SOP_Node *thissop = cookparms.getNode();
3550  if (!thissop) return getOverridecolor();
3551  bool result;
3552  OP_Utils::evalOpParm(result, thissop, "overridecolor", cookparms.getCookTime(), 0);
3553  return result;
3554  }
3555  bool getColorbyname() const { return myColorbyname; }
3556  void setColorbyname(bool val) { myColorbyname = val; }
3557  bool opColorbyname(const SOP_NodeVerb::CookParms &cookparms) const
3558  {
3559  SOP_Node *thissop = cookparms.getNode();
3560  if (!thissop) return getColorbyname();
3561  bool result;
3562  OP_Utils::evalOpParm(result, thissop, "colorbyname", cookparms.getCookTime(), 0);
3563  return result;
3564  }
3565  UT_Vector3D getDefaultcolor() const { return myDefaultcolor; }
3566  void setDefaultcolor(UT_Vector3D val) { myDefaultcolor = val; }
3568  {
3569  SOP_Node *thissop = cookparms.getNode();
3570  if (!thissop) return getDefaultcolor();
3572  OP_Utils::evalOpParm(result, thissop, "defaultcolor", cookparms.getCookTime(), 0);
3573  return result;
3574  }
3575  UT_Vector3D getTemplatecolor() const { return myTemplatecolor; }
3576  void setTemplatecolor(UT_Vector3D val) { myTemplatecolor = val; }
3578  {
3579  SOP_Node *thissop = cookparms.getNode();
3580  if (!thissop) return getTemplatecolor();
3582  OP_Utils::evalOpParm(result, thissop, "templatecolor", cookparms.getCookTime(), 0);
3583  return result;
3584  }
3585  int64 getColorseed() const { return myColorseed; }
3586  void setColorseed(int64 val) { myColorseed = val; }
3588  {
3589  SOP_Node *thissop = cookparms.getNode();
3590  if (!thissop) return getColorseed();
3591  int64 result;
3592  OP_Utils::evalOpParm(result, thissop, "colorseed", cookparms.getCookTime(), 0);
3593  return result;
3594  }
3595  const UT_Array<Folder_grouplist> &getFolder_grouplist() const { return myFolder_grouplist; }
3596 void setFolder_grouplist(const UT_Array<Folder_grouplist> &val) { myFolder_grouplist = val; }
3598  {
3599  SOP_Node *thissop = cookparms.getNode();
3600  if (!thissop) return getFolder_grouplist().entries();
3601  exint result;
3602  OP_Utils::evalOpParm(result, thissop, "folder_grouplist", cookparms.getCookTime(), 0);
3603  return result;
3604  }
3606  { return opinstFolder_grouplist_groupcolor(cookparms, &_idx); }
3608  {
3609  SOP_Node *thissop = cookparms.getNode();
3610  if (!thissop) return (myFolder_grouplist(_idx[0]).groupcolor);
3611  int _parmidx[2-1];
3612  _parmidx[1-1] = _idx[1-1] + 0;
3613 
3615  OP_Utils::evalOpParmInst(result, thissop, "groupcolor#", _parmidx, cookparms.getCookTime(), 0, 2-1);
3616  return (result);
3617  }
3619  { return opinstFolder_grouplist_groupname(cookparms, &_idx); }
3621  {
3622  SOP_Node *thissop = cookparms.getNode();
3623  if (!thissop) return (myFolder_grouplist(_idx[0]).groupname);
3624  int _parmidx[2-1];
3625  _parmidx[1-1] = _idx[1-1] + 0;
3626 
3628  OP_Utils::evalOpParmInst(result, thissop, "groupname#", _parmidx, cookparms.getCookTime(), 0, 2-1);
3629  return (result);
3630  }
3632  { return opinstFolder_grouplist_groupoptions(cookparms, &_idx); }
3633  int64 opinstFolder_grouplist_groupoptions(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
3634  {
3635  SOP_Node *thissop = cookparms.getNode();
3636  if (!thissop) return (myFolder_grouplist(_idx[0]).groupoptions);
3637  int _parmidx[2-1];
3638  _parmidx[1-1] = _idx[1-1] + 0;
3639 
3640  int64 result;
3641  OP_Utils::evalOpParmInst(result, thissop, "groupoptions#", _parmidx, cookparms.getCookTime(), 0, 2-1);
3642  return (result);
3643  }
3644 
3645  Xord getXord() const { return Xord(myXord); }
3646  void setXord(Xord val) { myXord = int64(val); }
3647  Xord opXord(const SOP_NodeVerb::CookParms &cookparms) const
3648  {
3649  SOP_Node *thissop = cookparms.getNode();
3650  if (!thissop) return getXord();
3651  int64 result;
3652  OP_Utils::evalOpParm(result, thissop, "xOrd", cookparms.getCookTime(), 0);
3653  return Xord(result);
3654  }
3655  Rord getRord() const { return Rord(myRord); }
3656  void setRord(Rord val) { myRord = int64(val); }
3657  Rord opRord(const SOP_NodeVerb::CookParms &cookparms) const
3658  {
3659  SOP_Node *thissop = cookparms.getNode();
3660  if (!thissop) return getRord();
3661  int64 result;
3662  OP_Utils::evalOpParm(result, thissop, "rOrd", cookparms.getCookTime(), 0);
3663  return Rord(result);
3664  }
3665  UT_Vector3D getT() const { return myT; }
3666  void setT(UT_Vector3D val) { myT = val; }
3667  UT_Vector3D opT(const SOP_NodeVerb::CookParms &cookparms) const
3668  {
3669  SOP_Node *thissop = cookparms.getNode();
3670  if (!thissop) return getT();
3672  OP_Utils::evalOpParm(result, thissop, "t", cookparms.getCookTime(), 0);
3673  return result;
3674  }
3675  UT_Vector3D getR() const { return myR; }
3676  void setR(UT_Vector3D val) { myR = val; }
3677  UT_Vector3D opR(const SOP_NodeVerb::CookParms &cookparms) const
3678  {
3679  SOP_Node *thissop = cookparms.getNode();
3680  if (!thissop) return getR();
3682  OP_Utils::evalOpParm(result, thissop, "r", cookparms.getCookTime(), 0);
3683  return result;
3684  }
3685  UT_Vector3D getS() const { return myS; }
3686  void setS(UT_Vector3D val) { myS = val; }
3687  UT_Vector3D opS(const SOP_NodeVerb::CookParms &cookparms) const
3688  {
3689  SOP_Node *thissop = cookparms.getNode();
3690  if (!thissop) return getS();
3692  OP_Utils::evalOpParm(result, thissop, "s", cookparms.getCookTime(), 0);
3693  return result;
3694  }
3695  UT_Vector3D getShear() const { return myShear; }
3696  void setShear(UT_Vector3D val) { myShear = val; }
3698  {
3699  SOP_Node *thissop = cookparms.getNode();
3700  if (!thissop) return getShear();
3702  OP_Utils::evalOpParm(result, thissop, "shear", cookparms.getCookTime(), 0);
3703  return result;
3704  }
3705  fpreal64 getScale() const { return myScale; }
3706  void setScale(fpreal64 val) { myScale = val; }
3707  fpreal64 opScale(const SOP_NodeVerb::CookParms &cookparms) const
3708  {
3709  SOP_Node *thissop = cookparms.getNode();
3710  if (!thissop) return getScale();
3711  fpreal64 result;
3712  OP_Utils::evalOpParm(result, thissop, "scale", cookparms.getCookTime(), 0);
3713  return result;
3714  }
3715  UT_Vector3D getP() const { return myP; }
3716  void setP(UT_Vector3D val) { myP = val; }
3717  UT_Vector3D opP(const SOP_NodeVerb::CookParms &cookparms) const
3718  {
3719  SOP_Node *thissop = cookparms.getNode();
3720  if (!thissop) return getP();
3722  OP_Utils::evalOpParm(result, thissop, "p", cookparms.getCookTime(), 0);
3723  return result;
3724  }
3725  UT_Vector3D getPr() const { return myPr; }
3726  void setPr(UT_Vector3D val) { myPr = val; }
3727  UT_Vector3D opPr(const SOP_NodeVerb::CookParms &cookparms) const
3728  {
3729  SOP_Node *thissop = cookparms.getNode();
3730  if (!thissop) return getPr();
3732  OP_Utils::evalOpParm(result, thissop, "pr", cookparms.getCookTime(), 0);
3733  return result;
3734  }
3735  UT_Vector4D getCamxform0() const { return myCamxform0; }
3736  void setCamxform0(UT_Vector4D val) { myCamxform0 = val; }
3738  {
3739  SOP_Node *thissop = cookparms.getNode();
3740  if (!thissop) return getCamxform0();
3742  OP_Utils::evalOpParm(result, thissop, "camxform0", cookparms.getCookTime(), 0);
3743  return result;
3744  }
3745  UT_Vector4D getCamxform1() const { return myCamxform1; }
3746  void setCamxform1(UT_Vector4D val) { myCamxform1 = val; }
3748  {
3749  SOP_Node *thissop = cookparms.getNode();
3750  if (!thissop) return getCamxform1();
3752  OP_Utils::evalOpParm(result, thissop, "camxform1", cookparms.getCookTime(), 0);
3753  return result;
3754  }
3755  UT_Vector4D getCamxform2() const { return myCamxform2; }
3756  void setCamxform2(UT_Vector4D val) { myCamxform2 = val; }
3758  {
3759  SOP_Node *thissop = cookparms.getNode();
3760  if (!thissop) return getCamxform2();
3762  OP_Utils::evalOpParm(result, thissop, "camxform2", cookparms.getCookTime(), 0);
3763  return result;
3764  }
3765  UT_Vector4D getCamxform3() const { return myCamxform3; }
3766  void setCamxform3(UT_Vector4D val) { myCamxform3 = val; }
3768  {
3769  SOP_Node *thissop = cookparms.getNode();
3770  if (!thissop) return getCamxform3();
3772  OP_Utils::evalOpParm(result, thissop, "camxform3", cookparms.getCookTime(), 0);
3773  return result;
3774  }
3775  UT_Vector3D getCampos() const { return myCampos; }
3776  void setCampos(UT_Vector3D val) { myCampos = val; }
3778  {
3779  SOP_Node *thissop = cookparms.getNode();
3780  if (!thissop) return getCampos();
3782  OP_Utils::evalOpParm(result, thissop, "campos", cookparms.getCookTime(), 0);
3783  return result;
3784  }
3785  UT_Vector2D getCursorpos() const { return myCursorpos; }
3786  void setCursorpos(UT_Vector2D val) { myCursorpos = val; }
3788  {
3789  SOP_Node *thissop = cookparms.getNode();
3790  if (!thissop) return getCursorpos();
3792  OP_Utils::evalOpParm(result, thissop, "cursorpos", cookparms.getCookTime(), 0);
3793  return result;
3794  }
3795  UT_Vector3D getCursordisplace() const { return myCursordisplace; }
3796  void setCursordisplace(UT_Vector3D val) { myCursordisplace = val; }
3798  {
3799  SOP_Node *thissop = cookparms.getNode();
3800  if (!thissop) return getCursordisplace();
3802  OP_Utils::evalOpParm(result, thissop, "cursordisplace", cookparms.getCookTime(), 0);
3803  return result;
3804  }
3805  UT_Vector3D getRaypos() const { return myRaypos; }
3806  void setRaypos(UT_Vector3D val) { myRaypos = val; }
3808  {
3809  SOP_Node *thissop = cookparms.getNode();
3810  if (!thissop) return getRaypos();
3812  OP_Utils::evalOpParm(result, thissop, "raypos", cookparms.getCookTime(), 0);
3813  return result;
3814  }
3815  UT_Vector3D getRaydir() const { return myRaydir; }
3816  void setRaydir(UT_Vector3D val) { myRaydir = val; }
3818  {
3819  SOP_Node *thissop = cookparms.getNode();
3820  if (!thissop) return getRaydir();
3822  OP_Utils::evalOpParm(result, thissop, "raydir", cookparms.getCookTime(), 0);
3823  return result;
3824  }
3825  fpreal64 getStrengthscale() const { return myStrengthscale; }
3826  void setStrengthscale(fpreal64 val) { myStrengthscale = val; }
3828  {
3829  SOP_Node *thissop = cookparms.getNode();
3830  if (!thissop) return getStrengthscale();
3831  fpreal64 result;
3832  OP_Utils::evalOpParm(result, thissop, "strengthscale", cookparms.getCookTime(), 0);
3833  return result;
3834  }
3835  Button getButton() const { return Button(myButton); }
3836  void setButton(Button val) { myButton = int64(val); }
3837  Button opButton(const SOP_NodeVerb::CookParms &cookparms) const
3838  {
3839  SOP_Node *thissop = cookparms.getNode();
3840  if (!thissop) return getButton();
3841  int64 result;
3842  OP_Utils::evalOpParm(result, thissop, "button", cookparms.getCookTime(), 0);
3843  return Button(result);
3844  }
3845  bool getShiftkey() const { return myShiftkey; }
3846  void setShiftkey(bool val) { myShiftkey = val; }
3847  bool opShiftkey(const SOP_NodeVerb::CookParms &cookparms) const
3848  {
3849  SOP_Node *thissop = cookparms.getNode();
3850  if (!thissop) return getShiftkey();
3851  bool result;
3852  OP_Utils::evalOpParm(result, thissop, "shiftkey", cookparms.getCookTime(), 0);
3853  return result;
3854  }
3855  bool getCtrlkey() const { return myCtrlkey; }
3856  void setCtrlkey(bool val) { myCtrlkey = val; }
3857  bool opCtrlkey(const SOP_NodeVerb::CookParms &cookparms) const
3858  {
3859  SOP_Node *thissop = cookparms.getNode();
3860  if (!thissop) return getCtrlkey();
3861  bool result;
3862  OP_Utils::evalOpParm(result, thissop, "ctrlkey", cookparms.getCookTime(), 0);
3863  return result;
3864  }
3865 
3866 private:
3867  UT_StringHolder myStashnode;
3868  UT_StringHolder myGroup;
3869  int64 myGrouptype;
3870  bool myUsemask;
3871  bool myMirrorbrush;
3872  bool myMirror;
3873  UT_StringHolder myMirrorgroup;
3874  UT_Vector3D myMirrororigin;
3875  UT_Vector3D myMirrordir;
3876  int64 myTool;
3877  fpreal64 myRaybias;
3878  bool myStrandmode;
3879  bool myCollidewithskin;
3880  bool myCreateorient;
3881  UT_StringHolder myOrientname;
3882  UT_Vector3D myOrientup;
3883  UT_StringHolder myOrientupattrib;
3884  bool myOrientupattribflip;
3885  UT_StringHolder myTemplatesourcegroup;
3886  bool myWidthoverride;
3887  fpreal64 myWidth;
3888  bool myBrushsurface;
3889  bool myUsepartinglines;
3890  fpreal64 myScreenradius;
3891  fpreal64 myObjectradius;
3892  fpreal64 mySoft;
3893  fpreal64 mySpacing;
3894  fpreal64 myDensity;
3895  fpreal64 myBrushmaintainlength;
3896  bool myBrushsnaptosurface;
3897  fpreal64 myBrushbend;
3898  fpreal64 myBrushbendfalloff;
3899  int64 myLiftmode;
3900  fpreal64 myLiftangle;
3901  int64 myAdjustlengthmode;
3902  fpreal64 myAdjustlengthvalue;
3903  fpreal64 myAdjustlengthlength;
3904  int64 myAdjustlengthmethod;
3905  bool myMoverotatewithskin;
3906  bool mySculptdoconstrain;
3907  bool mySculptlockroot;
3908  bool mySculptmaintainevensegments;
3909  fpreal64 mySmoothtargetsmoothness;
3910  bool mySmoothposition;
3911  bool mySmoothorient;
3912  bool myBlurinskinspace;
3913  bool myBlurperpoint;
3914  bool myBlurshape;
3915  bool myBlurlength;
3916  bool myBlurorient;
3917  int64 myCutmode;
3918  bool myClumpperpoint;
3919  int64 myPlantmode;
3920  bool myPlantinterpolateguides;
3921  bool myPlantinterpolaterelskin;
3922  bool myPlantinterpolateorient;
3923  int64 myPlanttemplatesource;
3924  fpreal64 myPlantlength;
3925  int64 myPlantsegcount;
3926  bool myDrawonskin;
3927  bool myDrawinterpolateorient;
3928  int64 myDrawtemplatesource;
3929  bool myDrawlimitlength;
3930  int64 myDrawcurvetype;
3931  int64 myDrawsegmode;
3932  int64 myDrawsegcount;
3933  fpreal64 myDrawseglength;
3934  int64 myOrientbrushupmode;
3935  bool myOrientbrushperpoint;
3936  bool myPainttemplateallowblending;
3937  int64 myEditactiveprim;
3938  bool myEditsoft;
3939  int64 myEditsoftmode;
3940  fpreal64 myEditcurvefrac;
3941  fpreal64 myEditcurvedist;
3942  int64 myResamplesegmode;
3943  int64 myResamplesegcount;
3944  fpreal64 myResampleseglength;
3945  fpreal64 myTwistangle;
3946  UT_SharedPtr<UT_Ramp> myCurvemaskramp;
3947  PRM_DataItemHandle myGroom;
3948  PRM_DataItemHandle myStrands;
3949  PRM_DataItemHandle myStrokes;
3950  bool myPreviewutil;
3951  bool myPaintmaskpoints;
3952  bool myGroupnewprims;
3953  bool myNamenewprims;
3954  UT_StringHolder myActivegroup;
3955  UT_StringHolder myNameattrib;
3956  UT_StringHolder myActivename;
3957  bool myOverridecolor;
3958  bool myColorbyname;
3959  UT_Vector3D myDefaultcolor;
3960  UT_Vector3D myTemplatecolor;
3961  int64 myColorseed;
3962  UT_Array<Folder_grouplist> myFolder_grouplist;
3963  int64 myXord;
3964  int64 myRord;
3965  UT_Vector3D myT;
3966  UT_Vector3D myR;
3967  UT_Vector3D myS;
3968  UT_Vector3D myShear;
3969  fpreal64 myScale;
3970  UT_Vector3D myP;
3971  UT_Vector3D myPr;
3972  UT_Vector4D myCamxform0;
3973  UT_Vector4D myCamxform1;
3974  UT_Vector4D myCamxform2;
3975  UT_Vector4D myCamxform3;
3976  UT_Vector3D myCampos;
3977  UT_Vector2D myCursorpos;
3978  UT_Vector3D myCursordisplace;
3979  UT_Vector3D myRaypos;
3980  UT_Vector3D myRaydir;
3981  fpreal64 myStrengthscale;
3982  int64 myButton;
3983  bool myShiftkey;
3984  bool myCtrlkey;
3985 
3986 };
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
UT_Vector4D opCamxform1(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opActivegroup(const SOP_NodeVerb::CookParms &cookparms) const
void setOrientname(const UT_StringHolder &val)
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)
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glcorearb.h:2540
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
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:347
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void setAdjustlengthlength(fpreal64 val)
void setOrientbrushupmode(Orientbrushupmode val)
static void loadData(UT_IStream &is, fpreal64 &v)
bool opColorbyname(const SOP_NodeVerb::CookParms &cookparms) const
void setAdjustlengthmode(Adjustlengthmode val)
T clampMaxValue(fpreal maxvalue, const T &src) const
Definition: OP_NodeParms.h:315
bool opPlantinterpolaterelskin(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D opCursorpos(const SOP_NodeVerb::CookParms &cookparms) const
void setBrushmaintainlength(fpreal64 val)
bool opPlantinterpolateorient(const SOP_NodeVerb::CookParms &cookparms) const
void
Definition: png.h:1083
Drawsegmode getDrawsegmode() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
exint bread(int32 *buffer, exint asize=1)
GLboolean * data
Definition: glcorearb.h:131
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
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:493
bool opCollidewithskin(const SOP_NodeVerb::CookParms &cookparms) const
const GLdouble * v
Definition: glcorearb.h:837
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
UT_StringHolder opFolder_grouplist_groupname(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
fpreal getTime() const
Definition: OP_Context.h:62
fpreal64 opBrushbendfalloff(const SOP_NodeVerb::CookParms &cookparms) const
exint getNestNumParms(TempIndex idx) const override
UT_String makeQuotedString(char delimiter='\'', bool escape_nonprinting=false) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
const OP_Context & context() const
Definition: OP_NodeParms.h:97
UT_Vector3D getTemplatecolor() const
void setDefaultcolor(UT_Vector3D val)
const char * getNestParmName(TempIndex fieldnum) const override
bool operator!=(const SOP_GuideGroomCoreParms &src) const
UT_StringHolder opNameattrib(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
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
int64 opFolder_grouplist_groupoptions(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
static void saveData(std::ostream &os, int64 v)
GLdouble s
Definition: glad.h:3009
static void loadData(UT_IStream &is, UT_Matrix2D &v)
GLuint GLsizei GLsizei * length
Definition: glcorearb.h:795
const UT_StringHolder & getTemplatesourcegroup() const
UT_StringHolder opOrientname(const SOP_NodeVerb::CookParms &cookparms) const
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
Planttemplatesource getPlanttemplatesource() 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
UT_Vector3D opOrientup(const SOP_NodeVerb::CookParms &cookparms) const
**But if you need a result
Definition: thread.h:613
fpreal64 opSmoothtargetsmoothness(const SOP_NodeVerb::CookParms &cookparms) const
T clampMinValue(fpreal minvalue, const T &src) const
Definition: OP_NodeParms.h:308
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
exint nodeIdx() const
Definition: OP_NodeParms.h:95
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
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
void setOrientupattrib(const UT_StringHolder &val)
bool opDrawinterpolateorient(const SOP_NodeVerb::CookParms &cookparms) const
bool opOverridecolor(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
GLuint GLsizei const GLuint const GLintptr * offsets
Definition: glcorearb.h:2621
bool opBlurorient(const SOP_NodeVerb::CookParms &cookparms) const
Planttemplatesource opPlanttemplatesource(const SOP_NodeVerb::CookParms &cookparms) const
double fpreal64
Definition: SYS_Types.h:201
int64 opPlantsegcount(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, bool &v)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
static void saveData(std::ostream &os, UT_Vector3D v)
UT_Vector3D opinstFolder_grouplist_groupcolor(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
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
const UT_StringHolder & getOrientupattrib() const
void setStrands(PRM_DataItemHandle val)
bool opBlurperpoint(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4D &v)
bool opCreateorient(const SOP_NodeVerb::CookParms &cookparms) const
Adjustlengthmethod opAdjustlengthmethod(const SOP_NodeVerb::CookParms &cookparms) const
bool opPainttemplateallowblending(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)
bool opBlurlength(const SOP_NodeVerb::CookParms &cookparms) const
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 setPlanttemplatesource(Planttemplatesource val)
UT_Vector3D opTemplatecolor(const SOP_NodeVerb::CookParms &cookparms) const
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:36
UT_Vector3D getCursordisplace() const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
int64 opinstFolder_grouplist_groupoptions(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
fpreal64 opWidth(const SOP_NodeVerb::CookParms &cookparms) const
void setAdjustlengthmethod(Adjustlengthmethod val)
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
Drawtemplatesource opDrawtemplatesource(const SOP_NodeVerb::CookParms &cookparms) const
bool opPreviewutil(const SOP_NodeVerb::CookParms &cookparms) const
Liftmode opLiftmode(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opTwistangle(const SOP_NodeVerb::CookParms &cookparms) const
Grouptype opGrouptype(const SOP_NodeVerb::CookParms &cookparms) const
exint read(bool *array, exint sz=1)
Definition: UT_IStream.h:276
bool opUsepartinglines(const SOP_NodeVerb::CookParms &cookparms) const
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
const UT_StringHolder & getActivename() const
Editsoftmode getEditsoftmode() const
Orientbrushupmode getOrientbrushupmode() const
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
void setTemplatecolor(UT_Vector3D val)
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
virtual void evalOpParmInst(int64 &v, NodeIdx node, const char *parmname, const int *inst, const int *offsets, fpreal time, DEP_MicroNode *depnode, int nestlevel=1) const =0
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
void setTemplatesourcegroup(const UT_StringHolder &val)
fpreal64 getSmoothtargetsmoothness() const
UT_StringHolder opOrientupattrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opMirrorgroup(const SOP_NodeVerb::CookParms &cookparms) const
bool operator!=(const Folder_grouplist &src) const
bool opShiftkey(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opEditcurvefrac(const SOP_NodeVerb::CookParms &cookparms) const
bool opWidthoverride(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
UT_StringHolder opinstFolder_grouplist_groupname(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
bool opSculptlockroot(const SOP_NodeVerb::CookParms &cookparms) const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
bool isParmColorRamp(exint idx) const override
fpreal64 opAdjustlengthlength(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opAdjustlengthvalue(const SOP_NodeVerb::CookParms &cookparms) const
void setFolder_grouplist(const UT_Array< Folder_grouplist > &val)
void setStrokes(PRM_DataItemHandle val)
UT_Vector3D getDefaultcolor() const
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
exint opFolder_grouplist(const SOP_NodeVerb::CookParms &cookparms) const
bool opDrawonskin(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE void strcat(const char *src)
static void saveData(std::ostream &os, UT_Vector4D v)
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
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
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
exint entries() const
Alias of size(). size() is preferred.
Definition: UT_Array.h:648
bool opBlurinskinspace(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D opCursordisplace(const SOP_NodeVerb::CookParms &cookparms) const
bool opOrientbrushperpoint(const SOP_NodeVerb::CookParms &cookparms) const
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
int int appendSprintf(const char *fmt,...) SYS_PRINTF_CHECK_ATTRIBUTE(2
bool opSculptmaintainevensegments(const SOP_NodeVerb::CookParms &cookparms) const
Editsoftmode opEditsoftmode(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opTemplatesourcegroup(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void coerceValue(T &result, const S &src) const
Definition: OP_NodeParms.h:301
bool opDrawlimitlength(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder createString(const UT_Array< Folder_grouplist > &list) const
void setGroup(const UT_StringHolder &val)
UT_Vector3D opDefaultcolor(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_StringHolder s)
PRM_DataItemHandle opStrands(const SOP_NodeVerb::CookParms &cookparms) const
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
int64 opDrawsegcount(const SOP_NodeVerb::CookParms &cookparms) const
bool opBrushsurface(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 fpreal
Definition: SYS_Types.h:277
Cutmode opCutmode(const SOP_NodeVerb::CookParms &cookparms) const
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
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:88
fpreal64 opDrawseglength(const SOP_NodeVerb::CookParms &cookparms) const
bool opOrientupattribflip(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)
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
SYS_FORCE_INLINE void append(char character)
void setStashnode(const UT_StringHolder &val)
UT_Vector3D opFolder_grouplist_groupcolor(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
GLuint GLfloat * val
Definition: glcorearb.h:1608
Vec3< typename MatType::value_type > getScale(const MatType &mat)
Return a Vec3 representing the lengths of the passed matrix's upper 3×3's rows.
Definition: Mat.h:633
bool opSmoothorient(const SOP_NodeVerb::CookParms &cookparms) const
bool opBrushsnaptosurface(const SOP_NodeVerb::CookParms &cookparms) const
#define SOP_API
Definition: SOP_API.h:10
Drawtemplatesource getDrawtemplatesource() const
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
UT_Vector3D opS(const SOP_NodeVerb::CookParms &cookparms) const
int64 opResamplesegcount(const SOP_NodeVerb::CookParms &cookparms) const
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
static void saveData(std::ostream &os, UT_Matrix2D v)
bool opMirrorbrush(const SOP_NodeVerb::CookParms &cookparms) const
int64 opEditactiveprim(const SOP_NodeVerb::CookParms &cookparms) const
const UT_Array< Folder_grouplist > & getFolder_grouplist() const
PRM_DataItemHandle getStrands() const
void copyFrom(const OP_NodeParms *src) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
Rord opRord(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const Folder_grouplist &src) const
const char * findChar(int c) const
Definition: UT_String.h:1385
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
Definition: core.h:1131
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
GLboolean r
Definition: glcorearb.h:1222
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)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
void setDrawtemplatesource(Drawtemplatesource val)
fpreal64 opPlantlength(const SOP_NodeVerb::CookParms &cookparms) const
type
Definition: core.h:1059
static void loadData(UT_IStream &is, UT_Matrix4D &v)
Xord opXord(const SOP_NodeVerb::CookParms &cookparms) const
bool opBlurshape(const SOP_NodeVerb::CookParms &cookparms) const
void setResamplesegmode(Resamplesegmode val)
Orientbrushupmode opOrientbrushupmode(const SOP_NodeVerb::CookParms &cookparms) const
bool opPaintmaskpoints(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D opCampos(const SOP_NodeVerb::CookParms &cookparms) const
void setCamxform3(UT_Vector4D val)
bool opSmoothposition(const SOP_NodeVerb::CookParms &cookparms) const
void setOrientup(UT_Vector3D val)
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:89
void setMirrorgroup(const UT_StringHolder &val)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
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
OP_NodeParms & operator=(const OP_NodeParms &)=default
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
const UT_StringHolder & getOrientname() const
bool opMirror(const SOP_NodeVerb::CookParms &cookparms) const
void setEditsoftmode(Editsoftmode val)
GLenum src
Definition: glcorearb.h:1793
fpreal64 opEditcurvedist(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
PRM_DataItemHandle opStrokes(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override