HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_HairClump.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 <OP/OP_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_HairClumpEnums
24 {
25  enum class Blendoverride
26  {
27  NONE = 0,
29  SKINATTRIB,
30  TEXTURE,
32  };
33 
35  getToken(Blendoverride enum_value)
36  {
37  using namespace UT::Literal;
38  switch (enum_value) {
39  case Blendoverride::NONE: return "none"_sh;
40  case Blendoverride::CURVEATTRIB: return "curveattrib"_sh;
41  case Blendoverride::SKINATTRIB: return "skinattrib"_sh;
42  case Blendoverride::TEXTURE: return "texture"_sh;
43  case Blendoverride::TEXTUREPRIM: return "textureprim"_sh;
44  default: UT_ASSERT(false); return ""_sh;
45  }
46  }
47 
48  enum class Clumpsizeoverride
49  {
50  NONE = 0,
51  SKINATTRIB,
52  TEXTURE,
54  };
55 
58  {
59  using namespace UT::Literal;
60  switch (enum_value) {
61  case Clumpsizeoverride::NONE: return "none"_sh;
62  case Clumpsizeoverride::SKINATTRIB: return "skinattrib"_sh;
63  case Clumpsizeoverride::TEXTURE: return "texture"_sh;
64  case Clumpsizeoverride::TEXTUREPRIM: return "textureprim"_sh;
65  default: UT_ASSERT(false); return ""_sh;
66  }
67  }
68 
69  enum class Method
70  {
71  LINEARBLEND = 0,
73  };
74 
76  getToken(Method enum_value)
77  {
78  using namespace UT::Literal;
79  switch (enum_value) {
80  case Method::LINEARBLEND: return "linearblend"_sh;
81  case Method::EXTRUDEBLEND: return "extrudeblend"_sh;
82  default: UT_ASSERT(false); return ""_sh;
83  }
84  }
85 
86  enum class Tightnessoverride
87  {
88  NONE = 0,
91  SKINATTRIB,
92  TEXTURE,
94  };
95 
98  {
99  using namespace UT::Literal;
100  switch (enum_value) {
101  case Tightnessoverride::NONE: return "none"_sh;
102  case Tightnessoverride::CLUMPATTRIB: return "clumpattrib"_sh;
103  case Tightnessoverride::CURVEATTRIB: return "curveattrib"_sh;
104  case Tightnessoverride::SKINATTRIB: return "skinattrib"_sh;
105  case Tightnessoverride::TEXTURE: return "texture"_sh;
106  case Tightnessoverride::TEXTUREPRIM: return "textureprim"_sh;
107  default: UT_ASSERT(false); return ""_sh;
108  }
109  }
110 
112  {
113  NONE = 0,
114  CLUMPATTRIB,
115  CURVEATTRIB,
116  SKINATTRIB,
117  TEXTURE,
119  };
120 
123  {
124  using namespace UT::Literal;
125  switch (enum_value) {
126  case Strayamountoverride::NONE: return "none"_sh;
127  case Strayamountoverride::CLUMPATTRIB: return "clumpattrib"_sh;
128  case Strayamountoverride::CURVEATTRIB: return "curveattrib"_sh;
129  case Strayamountoverride::SKINATTRIB: return "skinattrib"_sh;
130  case Strayamountoverride::TEXTURE: return "texture"_sh;
131  case Strayamountoverride::TEXTUREPRIM: return "textureprim"_sh;
132  default: UT_ASSERT(false); return ""_sh;
133  }
134  }
135 
136  enum class Strayrateoverride
137  {
138  NONE = 0,
139  CLUMPATTRIB,
140  CURVEATTRIB,
141  SKINATTRIB,
142  TEXTURE,
144  };
145 
148  {
149  using namespace UT::Literal;
150  switch (enum_value) {
151  case Strayrateoverride::NONE: return "none"_sh;
152  case Strayrateoverride::CLUMPATTRIB: return "clumpattrib"_sh;
153  case Strayrateoverride::CURVEATTRIB: return "curveattrib"_sh;
154  case Strayrateoverride::SKINATTRIB: return "skinattrib"_sh;
155  case Strayrateoverride::TEXTURE: return "texture"_sh;
156  case Strayrateoverride::TEXTUREPRIM: return "textureprim"_sh;
157  default: UT_ASSERT(false); return ""_sh;
158  }
159  }
160 
162  {
163  NONE = 0,
164  CLUMPATTRIB,
165  CURVEATTRIB,
166  SKINATTRIB,
167  TEXTURE,
169  };
170 
173  {
174  using namespace UT::Literal;
175  switch (enum_value) {
176  case Strayfalloffoverride::NONE: return "none"_sh;
177  case Strayfalloffoverride::CLUMPATTRIB: return "clumpattrib"_sh;
178  case Strayfalloffoverride::CURVEATTRIB: return "curveattrib"_sh;
179  case Strayfalloffoverride::SKINATTRIB: return "skinattrib"_sh;
180  case Strayfalloffoverride::TEXTURE: return "texture"_sh;
181  case Strayfalloffoverride::TEXTUREPRIM: return "textureprim"_sh;
182  default: UT_ASSERT(false); return ""_sh;
183  }
184  }
185 
187  {
188  NONE = 0,
189  CURVEATTRIB,
190  SKINATTRIB,
191  TEXTURE,
193  };
194 
197  {
198  using namespace UT::Literal;
199  switch (enum_value) {
200  case Iterationsoverride::NONE: return "none"_sh;
201  case Iterationsoverride::CURVEATTRIB: return "curveattrib"_sh;
202  case Iterationsoverride::SKINATTRIB: return "skinattrib"_sh;
203  case Iterationsoverride::TEXTURE: return "texture"_sh;
204  case Iterationsoverride::TEXTUREPRIM: return "textureprim"_sh;
205  default: UT_ASSERT(false); return ""_sh;
206  }
207  }
208 
210  {
211  NONE = 0,
212  SKINATTRIB,
213  TEXTURE,
215  };
216 
219  {
220  using namespace UT::Literal;
221  switch (enum_value) {
222  case Sizereductionoverride::NONE: return "none"_sh;
223  case Sizereductionoverride::SKINATTRIB: return "skinattrib"_sh;
224  case Sizereductionoverride::TEXTURE: return "texture"_sh;
225  case Sizereductionoverride::TEXTUREPRIM: return "textureprim"_sh;
226  default: UT_ASSERT(false); return ""_sh;
227  }
228  }
229 
231  {
232  NONE = 0,
233  SKINATTRIB,
234  TEXTURE,
236  };
237 
240  {
241  using namespace UT::Literal;
242  switch (enum_value) {
243  case Goalfeedbackoverride::NONE: return "none"_sh;
244  case Goalfeedbackoverride::SKINATTRIB: return "skinattrib"_sh;
245  case Goalfeedbackoverride::TEXTURE: return "texture"_sh;
246  case Goalfeedbackoverride::TEXTUREPRIM: return "textureprim"_sh;
247  default: UT_ASSERT(false); return ""_sh;
248  }
249  }
250 
252  {
253  NONE = 0,
254  CURVEATTRIB,
255  SKINATTRIB,
256  TEXTURE,
258  };
259 
262  {
263  using namespace UT::Literal;
264  switch (enum_value) {
265  case Tightnessreductionoverride::NONE: return "none"_sh;
266  case Tightnessreductionoverride::CURVEATTRIB: return "curveattrib"_sh;
267  case Tightnessreductionoverride::SKINATTRIB: return "skinattrib"_sh;
268  case Tightnessreductionoverride::TEXTURE: return "texture"_sh;
269  case Tightnessreductionoverride::TEXTUREPRIM: return "textureprim"_sh;
270  default: UT_ASSERT(false); return ""_sh;
271  }
272  }
273 
274  enum class Curlampoverride
275  {
276  NONE = 0,
277  CURVEATTRIB,
278  SKINATTRIB,
279  TEXTURE,
281  };
282 
285  {
286  using namespace UT::Literal;
287  switch (enum_value) {
288  case Curlampoverride::NONE: return "none"_sh;
289  case Curlampoverride::CURVEATTRIB: return "curveattrib"_sh;
290  case Curlampoverride::SKINATTRIB: return "skinattrib"_sh;
291  case Curlampoverride::TEXTURE: return "texture"_sh;
292  case Curlampoverride::TEXTUREPRIM: return "textureprim"_sh;
293  default: UT_ASSERT(false); return ""_sh;
294  }
295  }
296 
297  enum class Curlfreqoverride
298  {
299  NONE = 0,
300  CURVEATTRIB,
301  SKINATTRIB,
302  TEXTURE,
304  };
305 
308  {
309  using namespace UT::Literal;
310  switch (enum_value) {
311  case Curlfreqoverride::NONE: return "none"_sh;
312  case Curlfreqoverride::CURVEATTRIB: return "curveattrib"_sh;
313  case Curlfreqoverride::SKINATTRIB: return "skinattrib"_sh;
314  case Curlfreqoverride::TEXTURE: return "texture"_sh;
315  case Curlfreqoverride::TEXTUREPRIM: return "textureprim"_sh;
316  default: UT_ASSERT(false); return ""_sh;
317  }
318  }
319 
320 }
321 
322 
324 {
325 public:
326  static int version() { return 1; }
327 
329  {
330  myLegacymasking = false;
331  myUvattrib = "uv"_UTsh;
332  myBlend = 1;
333  myBlendoverride = 0;
334  myBlendoptions = 0;
335  myBlendinrange = UT_Vector2D(0,1);
336  myBlendoutrange = UT_Vector2D(0,1);
337  myBlendremapramp = UT_SharedPtr<UT_Ramp>(0);
338  myBlendcurveattrib = "clumpmask"_UTsh;
339  myBlendattrib = "clumpmask"_UTsh;
340  myBlendtexture = ""_UTsh;
341  myBlendtextureprim = "mask"_UTsh;
342  myUseskinmask = false;
343  mySkinmaskattrib = "clumpmask"_UTsh;
344  myClumpsize = 0.05;
345  myClumpsizeoverride = 0;
346  myClumpsizeoptions = 0;
347  myClumpsizeinrange = UT_Vector2D(0,1);
348  myClumpsizeoutrange = UT_Vector2D(0,1);
349  myClumpsizeremapramp = UT_SharedPtr<UT_Ramp>(0);
350  myClumpsizeattrib = "clumpsize"_UTsh;
351  myClumpsizetexture = ""_UTsh;
352  myClumpsizetextureprim = "mask"_UTsh;
353  mySearchbeyondradius = true;
354  myClumpwithinclumps = true;
355  myCrossoverrate = 0.2;
356  mySeed = 0;
357  myMethod = 1;
358  myPreservelength = true;
359  myExtendtomatch = 1;
360  myShortentomatch = 1;
361  myAccuratebundling = true;
362  myHairwidth = 0.001;
363  myHairwidthscale = 1;
364  myTightness = 1;
365  myTightnessoverride = 0;
366  myTightnessoptions = 0;
367  myTightnessinrange = UT_Vector2D(0,1);
368  myTightnessoutrange = UT_Vector2D(0,1);
369  myTightnessremapramp = UT_SharedPtr<UT_Ramp>(0);
370  myTightnesscurveattrib = "tightness"_UTsh;
371  myTightnessclumpattrib = "tightness"_UTsh;
372  myTightnessattrib = "tightness"_UTsh;
373  myTightnesstexture = ""_UTsh;
374  myTightnesstextureprim = "mask"_UTsh;
375  myStrayamount = 1;
376  myStrayamountoverride = 0;
377  myStrayamountoptions = 0;
378  myStrayamountinrange = UT_Vector2D(0,1);
379  myStrayamountoutrange = UT_Vector2D(0,1);
380  myStrayamountremapramp = UT_SharedPtr<UT_Ramp>(0);
381  myStrayamountcurveattrib = "strayamount"_UTsh;
382  myStrayamountclumpattrib = "strayamount"_UTsh;
383  myStrayamountattrib = "strayamount"_UTsh;
384  myStrayamounttexture = ""_UTsh;
385  myStrayamounttextureprim = "mask"_UTsh;
386  myStrayrate = 0;
387  myStrayrateoverride = 0;
388  myStrayrateoptions = 0;
389  myStrayrateinrange = UT_Vector2D(0,1);
390  myStrayrateoutrange = UT_Vector2D(0,1);
391  myStrayrateremapramp = UT_SharedPtr<UT_Ramp>(0);
392  myStrayratecurveattrib = "strayrate"_UTsh;
393  myStrayrateclumpattrib = "strayrate"_UTsh;
394  myStrayrateattrib = "strayrate"_UTsh;
395  myStrayratetexture = ""_UTsh;
396  myStrayratetextureprim = "mask"_UTsh;
397  myStrayfalloff = 1;
398  myStrayfalloffoverride = 0;
399  myStrayfalloffoptions = 0;
400  myStrayfalloffinrange = UT_Vector2D(0,1);
401  myStrayfalloffoutrange = UT_Vector2D(0,1);
402  myStrayfalloffremapramp = UT_SharedPtr<UT_Ramp>(0);
403  myStrayfalloffcurveattrib = "strayfalloff"_UTsh;
404  myStrayfalloffclumpattrib = "strayfalloff"_UTsh;
405  myStrayfalloffattrib = "strayfalloff"_UTsh;
406  myStrayfallofftexture = ""_UTsh;
407  myStrayfallofftextureprim = "mask"_UTsh;
408  myClumpprofile = UT_Ramp::buildFromDefault("1pos ( 0 ) 1value ( 1 ) 1interp ( bspline ) 2pos ( 0.14254385232925415 ) 2value ( 0.48605579137802124 ) 2interp ( bspline ) 3pos ( 0.56798243522644043 ) 3value ( 0.11952191591262817 ) 3interp ( bspline ) 4pos ( 1 ) 4value ( 0 ) 4interp ( bspline )");
409  myIterations = 1;
410  myIterationsoverride = 0;
411  myIterationsoptions = 0;
412  myIterationsinrange = UT_Vector2D(0,1);
413  myIterationsoutrange = UT_Vector2D(0,1);
414  myIterationsremapramp = UT_SharedPtr<UT_Ramp>(0);
415  myIterationscurveattrib = "clumpiterations"_UTsh;
416  myIterationsattrib = "clumpiterations"_UTsh;
417  myIterationstexture = ""_UTsh;
418  myIterationstextureprim = "mask"_UTsh;
419  mySizereduction = 0.4;
420  mySizereductionoverride = 0;
421  mySizereductionoptions = 0;
422  mySizereductioninrange = UT_Vector2D(0,1);
423  mySizereductionoutrange = UT_Vector2D(0,1);
424  mySizereductionremapramp = UT_SharedPtr<UT_Ramp>(0);
425  mySizereductionattrib = "clumpsizereduction"_UTsh;
426  mySizereductiontexture = ""_UTsh;
427  mySizereductiontextureprim = "mask"_UTsh;
428  myGoalfeedback = 0.1;
429  myGoalfeedbackoverride = 0;
430  myGoalfeedbackoptions = 0;
431  myGoalfeedbackinrange = UT_Vector2D(0,1);
432  myGoalfeedbackoutrange = UT_Vector2D(0,1);
433  myGoalfeedbackremapramp = UT_SharedPtr<UT_Ramp>(0);
434  myGoalfeedbackattrib = "clumpgoalfeedback"_UTsh;
435  myGoalfeedbacktexture = ""_UTsh;
436  myGoalfeedbacktextureprim = "mask"_UTsh;
437  myTightnessreduction = 0.2;
438  myTightnessreductionoverride = 0;
439  myTightnessreductionoptions = 0;
440  myTightnessreductioninrange = UT_Vector2D(0,1);
441  myTightnessreductionoutrange = UT_Vector2D(0,1);
442  myTightnessreductionremapramp = UT_SharedPtr<UT_Ramp>(0);
443  myTightnessreductioncurveattrib = "clumptightnessreduction"_UTsh;
444  myTightnessreductionattrib = "clumptightnessreduction"_UTsh;
445  myTightnessreductiontexture = ""_UTsh;
446  myTightnessreductiontextureprim = "mask"_UTsh;
447  myEnablecurling = false;
448  myCurlamp = 0;
449  myCurlampoverride = 0;
450  myCurlampoptions = 0;
451  myCurlampinrange = UT_Vector2D(0,1);
452  myCurlampoutrange = UT_Vector2D(0,1);
453  myCurlampremapramp = UT_SharedPtr<UT_Ramp>(0);
454  myCurlampcurveattrib = "clumpcurlamp"_UTsh;
455  myCurlampattrib = "clumpcurlamp"_UTsh;
456  myCurlamptexture = ""_UTsh;
457  myCurlamptextureprim = "mask"_UTsh;
458  myCurlampramp = UT_SharedPtr<UT_Ramp>(0);
459  myCurlfreq = 5;
460  myCurlfreqoverride = 0;
461  myCurlfreqoptions = 0;
462  myCurlfreqinrange = UT_Vector2D(0,1);
463  myCurlfreqoutrange = UT_Vector2D(0,1);
464  myCurlfreqremapramp = UT_SharedPtr<UT_Ramp>(0);
465  myCurlfreqcurveattrib = "clumpcurlfreq"_UTsh;
466  myCurlfreqattrib = "clumpcurlfreq"_UTsh;
467  myCurlfreqtexture = ""_UTsh;
468  myCurlfreqtextureprim = "mask"_UTsh;
469  myCurlfreqramp = UT_SharedPtr<UT_Ramp>(0);
470  myClumpidinputattrib = "clumpid"_UTsh;
471  myCreateclumpidattrib = true;
472  myClumpidoutputattrib = "clumpid"_UTsh;
473  myUseorientinputattrib = false;
474  myOrientinputattrib = "orient"_UTsh;
475  myCreatetightnessattrib = true;
476  myTightnessoutputattrib = "tightness"_UTsh;
477  myClumppointattribs = ""_UTsh;
478  myClumpprimattribs = ""_UTsh;
479 
480  }
481 
482  explicit SOP_HairClumpParms(const SOP_HairClumpParms &) = default;
483  SOP_HairClumpParms &operator=(const SOP_HairClumpParms &) = default;
484  SOP_HairClumpParms(SOP_HairClumpParms &&) noexcept = default;
485  SOP_HairClumpParms &operator=(SOP_HairClumpParms &&) noexcept = default;
486 
487  ~SOP_HairClumpParms() override {}
488 
489  bool operator==(const SOP_HairClumpParms &src) const
490  {
491  if (myLegacymasking != src.myLegacymasking) return false;
492  if (myUvattrib != src.myUvattrib) return false;
493  if (myBlend != src.myBlend) return false;
494  if (myBlendoverride != src.myBlendoverride) return false;
495  if (myBlendoptions != src.myBlendoptions) return false;
496  if (myBlendinrange != src.myBlendinrange) return false;
497  if (myBlendoutrange != src.myBlendoutrange) return false;
498  if (myBlendremapramp != src.myBlendremapramp)
499  { if (!myBlendremapramp || !src.myBlendremapramp || !(*myBlendremapramp == *src.myBlendremapramp)) return false; }
500  if (myBlendcurveattrib != src.myBlendcurveattrib) return false;
501  if (myBlendattrib != src.myBlendattrib) return false;
502  if (myBlendtexture != src.myBlendtexture) return false;
503  if (myBlendtextureprim != src.myBlendtextureprim) return false;
504  if (myUseskinmask != src.myUseskinmask) return false;
505  if (mySkinmaskattrib != src.mySkinmaskattrib) return false;
506  if (myClumpsize != src.myClumpsize) return false;
507  if (myClumpsizeoverride != src.myClumpsizeoverride) return false;
508  if (myClumpsizeoptions != src.myClumpsizeoptions) return false;
509  if (myClumpsizeinrange != src.myClumpsizeinrange) return false;
510  if (myClumpsizeoutrange != src.myClumpsizeoutrange) return false;
511  if (myClumpsizeremapramp != src.myClumpsizeremapramp)
512  { if (!myClumpsizeremapramp || !src.myClumpsizeremapramp || !(*myClumpsizeremapramp == *src.myClumpsizeremapramp)) return false; }
513  if (myClumpsizeattrib != src.myClumpsizeattrib) return false;
514  if (myClumpsizetexture != src.myClumpsizetexture) return false;
515  if (myClumpsizetextureprim != src.myClumpsizetextureprim) return false;
516  if (mySearchbeyondradius != src.mySearchbeyondradius) return false;
517  if (myClumpwithinclumps != src.myClumpwithinclumps) return false;
518  if (myCrossoverrate != src.myCrossoverrate) return false;
519  if (mySeed != src.mySeed) return false;
520  if (myMethod != src.myMethod) return false;
521  if (myPreservelength != src.myPreservelength) return false;
522  if (myExtendtomatch != src.myExtendtomatch) return false;
523  if (myShortentomatch != src.myShortentomatch) return false;
524  if (myAccuratebundling != src.myAccuratebundling) return false;
525  if (myHairwidth != src.myHairwidth) return false;
526  if (myHairwidthscale != src.myHairwidthscale) return false;
527  if (myTightness != src.myTightness) return false;
528  if (myTightnessoverride != src.myTightnessoverride) return false;
529  if (myTightnessoptions != src.myTightnessoptions) return false;
530  if (myTightnessinrange != src.myTightnessinrange) return false;
531  if (myTightnessoutrange != src.myTightnessoutrange) return false;
532  if (myTightnessremapramp != src.myTightnessremapramp)
533  { if (!myTightnessremapramp || !src.myTightnessremapramp || !(*myTightnessremapramp == *src.myTightnessremapramp)) return false; }
534  if (myTightnesscurveattrib != src.myTightnesscurveattrib) return false;
535  if (myTightnessclumpattrib != src.myTightnessclumpattrib) return false;
536  if (myTightnessattrib != src.myTightnessattrib) return false;
537  if (myTightnesstexture != src.myTightnesstexture) return false;
538  if (myTightnesstextureprim != src.myTightnesstextureprim) return false;
539  if (myStrayamount != src.myStrayamount) return false;
540  if (myStrayamountoverride != src.myStrayamountoverride) return false;
541  if (myStrayamountoptions != src.myStrayamountoptions) return false;
542  if (myStrayamountinrange != src.myStrayamountinrange) return false;
543  if (myStrayamountoutrange != src.myStrayamountoutrange) return false;
544  if (myStrayamountremapramp != src.myStrayamountremapramp)
545  { if (!myStrayamountremapramp || !src.myStrayamountremapramp || !(*myStrayamountremapramp == *src.myStrayamountremapramp)) return false; }
546  if (myStrayamountcurveattrib != src.myStrayamountcurveattrib) return false;
547  if (myStrayamountclumpattrib != src.myStrayamountclumpattrib) return false;
548  if (myStrayamountattrib != src.myStrayamountattrib) return false;
549  if (myStrayamounttexture != src.myStrayamounttexture) return false;
550  if (myStrayamounttextureprim != src.myStrayamounttextureprim) return false;
551  if (myStrayrate != src.myStrayrate) return false;
552  if (myStrayrateoverride != src.myStrayrateoverride) return false;
553  if (myStrayrateoptions != src.myStrayrateoptions) return false;
554  if (myStrayrateinrange != src.myStrayrateinrange) return false;
555  if (myStrayrateoutrange != src.myStrayrateoutrange) return false;
556  if (myStrayrateremapramp != src.myStrayrateremapramp)
557  { if (!myStrayrateremapramp || !src.myStrayrateremapramp || !(*myStrayrateremapramp == *src.myStrayrateremapramp)) return false; }
558  if (myStrayratecurveattrib != src.myStrayratecurveattrib) return false;
559  if (myStrayrateclumpattrib != src.myStrayrateclumpattrib) return false;
560  if (myStrayrateattrib != src.myStrayrateattrib) return false;
561  if (myStrayratetexture != src.myStrayratetexture) return false;
562  if (myStrayratetextureprim != src.myStrayratetextureprim) return false;
563  if (myStrayfalloff != src.myStrayfalloff) return false;
564  if (myStrayfalloffoverride != src.myStrayfalloffoverride) return false;
565  if (myStrayfalloffoptions != src.myStrayfalloffoptions) return false;
566  if (myStrayfalloffinrange != src.myStrayfalloffinrange) return false;
567  if (myStrayfalloffoutrange != src.myStrayfalloffoutrange) return false;
568  if (myStrayfalloffremapramp != src.myStrayfalloffremapramp)
569  { if (!myStrayfalloffremapramp || !src.myStrayfalloffremapramp || !(*myStrayfalloffremapramp == *src.myStrayfalloffremapramp)) return false; }
570  if (myStrayfalloffcurveattrib != src.myStrayfalloffcurveattrib) return false;
571  if (myStrayfalloffclumpattrib != src.myStrayfalloffclumpattrib) return false;
572  if (myStrayfalloffattrib != src.myStrayfalloffattrib) return false;
573  if (myStrayfallofftexture != src.myStrayfallofftexture) return false;
574  if (myStrayfallofftextureprim != src.myStrayfallofftextureprim) return false;
575  if (myClumpprofile != src.myClumpprofile)
576  { if (!myClumpprofile || !src.myClumpprofile || !(*myClumpprofile == *src.myClumpprofile)) return false; }
577  if (myIterations != src.myIterations) return false;
578  if (myIterationsoverride != src.myIterationsoverride) return false;
579  if (myIterationsoptions != src.myIterationsoptions) return false;
580  if (myIterationsinrange != src.myIterationsinrange) return false;
581  if (myIterationsoutrange != src.myIterationsoutrange) return false;
582  if (myIterationsremapramp != src.myIterationsremapramp)
583  { if (!myIterationsremapramp || !src.myIterationsremapramp || !(*myIterationsremapramp == *src.myIterationsremapramp)) return false; }
584  if (myIterationscurveattrib != src.myIterationscurveattrib) return false;
585  if (myIterationsattrib != src.myIterationsattrib) return false;
586  if (myIterationstexture != src.myIterationstexture) return false;
587  if (myIterationstextureprim != src.myIterationstextureprim) return false;
588  if (mySizereduction != src.mySizereduction) return false;
589  if (mySizereductionoverride != src.mySizereductionoverride) return false;
590  if (mySizereductionoptions != src.mySizereductionoptions) return false;
591  if (mySizereductioninrange != src.mySizereductioninrange) return false;
592  if (mySizereductionoutrange != src.mySizereductionoutrange) return false;
593  if (mySizereductionremapramp != src.mySizereductionremapramp)
594  { if (!mySizereductionremapramp || !src.mySizereductionremapramp || !(*mySizereductionremapramp == *src.mySizereductionremapramp)) return false; }
595  if (mySizereductionattrib != src.mySizereductionattrib) return false;
596  if (mySizereductiontexture != src.mySizereductiontexture) return false;
597  if (mySizereductiontextureprim != src.mySizereductiontextureprim) return false;
598  if (myGoalfeedback != src.myGoalfeedback) return false;
599  if (myGoalfeedbackoverride != src.myGoalfeedbackoverride) return false;
600  if (myGoalfeedbackoptions != src.myGoalfeedbackoptions) return false;
601  if (myGoalfeedbackinrange != src.myGoalfeedbackinrange) return false;
602  if (myGoalfeedbackoutrange != src.myGoalfeedbackoutrange) return false;
603  if (myGoalfeedbackremapramp != src.myGoalfeedbackremapramp)
604  { if (!myGoalfeedbackremapramp || !src.myGoalfeedbackremapramp || !(*myGoalfeedbackremapramp == *src.myGoalfeedbackremapramp)) return false; }
605  if (myGoalfeedbackattrib != src.myGoalfeedbackattrib) return false;
606  if (myGoalfeedbacktexture != src.myGoalfeedbacktexture) return false;
607  if (myGoalfeedbacktextureprim != src.myGoalfeedbacktextureprim) return false;
608  if (myTightnessreduction != src.myTightnessreduction) return false;
609  if (myTightnessreductionoverride != src.myTightnessreductionoverride) return false;
610  if (myTightnessreductionoptions != src.myTightnessreductionoptions) return false;
611  if (myTightnessreductioninrange != src.myTightnessreductioninrange) return false;
612  if (myTightnessreductionoutrange != src.myTightnessreductionoutrange) return false;
613  if (myTightnessreductionremapramp != src.myTightnessreductionremapramp)
614  { if (!myTightnessreductionremapramp || !src.myTightnessreductionremapramp || !(*myTightnessreductionremapramp == *src.myTightnessreductionremapramp)) return false; }
615  if (myTightnessreductioncurveattrib != src.myTightnessreductioncurveattrib) return false;
616  if (myTightnessreductionattrib != src.myTightnessreductionattrib) return false;
617  if (myTightnessreductiontexture != src.myTightnessreductiontexture) return false;
618  if (myTightnessreductiontextureprim != src.myTightnessreductiontextureprim) return false;
619  if (myEnablecurling != src.myEnablecurling) return false;
620  if (myCurlamp != src.myCurlamp) return false;
621  if (myCurlampoverride != src.myCurlampoverride) return false;
622  if (myCurlampoptions != src.myCurlampoptions) return false;
623  if (myCurlampinrange != src.myCurlampinrange) return false;
624  if (myCurlampoutrange != src.myCurlampoutrange) return false;
625  if (myCurlampremapramp != src.myCurlampremapramp)
626  { if (!myCurlampremapramp || !src.myCurlampremapramp || !(*myCurlampremapramp == *src.myCurlampremapramp)) return false; }
627  if (myCurlampcurveattrib != src.myCurlampcurveattrib) return false;
628  if (myCurlampattrib != src.myCurlampattrib) return false;
629  if (myCurlamptexture != src.myCurlamptexture) return false;
630  if (myCurlamptextureprim != src.myCurlamptextureprim) return false;
631  if (myCurlampramp != src.myCurlampramp)
632  { if (!myCurlampramp || !src.myCurlampramp || !(*myCurlampramp == *src.myCurlampramp)) return false; }
633  if (myCurlfreq != src.myCurlfreq) return false;
634  if (myCurlfreqoverride != src.myCurlfreqoverride) return false;
635  if (myCurlfreqoptions != src.myCurlfreqoptions) return false;
636  if (myCurlfreqinrange != src.myCurlfreqinrange) return false;
637  if (myCurlfreqoutrange != src.myCurlfreqoutrange) return false;
638  if (myCurlfreqremapramp != src.myCurlfreqremapramp)
639  { if (!myCurlfreqremapramp || !src.myCurlfreqremapramp || !(*myCurlfreqremapramp == *src.myCurlfreqremapramp)) return false; }
640  if (myCurlfreqcurveattrib != src.myCurlfreqcurveattrib) return false;
641  if (myCurlfreqattrib != src.myCurlfreqattrib) return false;
642  if (myCurlfreqtexture != src.myCurlfreqtexture) return false;
643  if (myCurlfreqtextureprim != src.myCurlfreqtextureprim) return false;
644  if (myCurlfreqramp != src.myCurlfreqramp)
645  { if (!myCurlfreqramp || !src.myCurlfreqramp || !(*myCurlfreqramp == *src.myCurlfreqramp)) return false; }
646  if (myClumpidinputattrib != src.myClumpidinputattrib) return false;
647  if (myCreateclumpidattrib != src.myCreateclumpidattrib) return false;
648  if (myClumpidoutputattrib != src.myClumpidoutputattrib) return false;
649  if (myUseorientinputattrib != src.myUseorientinputattrib) return false;
650  if (myOrientinputattrib != src.myOrientinputattrib) return false;
651  if (myCreatetightnessattrib != src.myCreatetightnessattrib) return false;
652  if (myTightnessoutputattrib != src.myTightnessoutputattrib) return false;
653  if (myClumppointattribs != src.myClumppointattribs) return false;
654  if (myClumpprimattribs != src.myClumpprimattribs) return false;
655 
656 
657  if (baseGetSignature() != src.baseGetSignature()) return false;
658 
659  return true;
660  }
661  bool operator!=(const SOP_HairClumpParms &src) const
662  {
663  return !operator==(src);
664  }
678 
679 
680 
681  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
682  {
683  myLegacymasking = false;
684  if (true)
685  graph->evalOpParm(myLegacymasking, nodeidx, "legacymasking", time, graph->isDirect()?nullptr:depnode);
686  myUvattrib = "uv"_UTsh;
687  if (true)
688  graph->evalOpParm(myUvattrib, nodeidx, "uvattrib", time, graph->isDirect()?nullptr:depnode);
689  myBlend = 1;
690  if (true)
691  graph->evalOpParm(myBlend, nodeidx, "blend", time, graph->isDirect()?nullptr:depnode);
692  myBlendoverride = 0;
693  if (true && ( (true&&!(((getLegacymasking()==1)))) ) )
694  graph->evalOpParm(myBlendoverride, nodeidx, "blendoverride", time, graph->isDirect()?nullptr:depnode);
695  myBlendoptions = 0;
696  if (true)
697  graph->evalOpParm(myBlendoptions, nodeidx, "blendoptions", time, graph->isDirect()?nullptr:depnode);
698  myBlendinrange = UT_Vector2D(0,1);
699  if (true && ( (true&&!(((int64(getBlendoverride())==0))||((getBlendoptions()!=1)&&(getBlendoptions()!=3)))) ) )
700  graph->evalOpParm(myBlendinrange, nodeidx, "blendinrange", time, graph->isDirect()?nullptr:depnode);
701  myBlendoutrange = UT_Vector2D(0,1);
702  if (true && ( (true&&!(((int64(getBlendoverride())==0))||((getBlendoptions()!=1)&&(getBlendoptions()!=3)))) ) )
703  graph->evalOpParm(myBlendoutrange, nodeidx, "blendoutrange", time, graph->isDirect()?nullptr:depnode);
704  myBlendremapramp = UT_SharedPtr<UT_Ramp>(0);
705  if (true && ( (true&&!(((getBlendoptions()!=2)&&(getBlendoptions()!=3)))) ) )
706  graph->evalOpParm(myBlendremapramp, nodeidx, "blendremapramp", time, graph->isDirect()?nullptr:depnode);
707  myBlendcurveattrib = "clumpmask"_UTsh;
708  if (true && ( (true&&!(((int64(getBlendoverride())!=1))||((getLegacymasking()==1)))) ) )
709  graph->evalOpParm(myBlendcurveattrib, nodeidx, "blendcurveattrib", time, graph->isDirect()?nullptr:depnode);
710  myBlendattrib = "clumpmask"_UTsh;
711  if (true && ( (true&&!(((int64(getBlendoverride())!=2))||((getLegacymasking()==1)))) ) )
712  graph->evalOpParm(myBlendattrib, nodeidx, "blendattrib", time, graph->isDirect()?nullptr:depnode);
713  myBlendtexture = ""_UTsh;
714  if (true && ( (true&&!(((int64(getBlendoverride())!=3))||((getLegacymasking()==1)))) ) )
715  graph->evalOpParm(myBlendtexture, nodeidx, "blendtexture", time, graph->isDirect()?nullptr:depnode);
716  myBlendtextureprim = "mask"_UTsh;
717  if (true && ( (true&&!(((int64(getBlendoverride())!=4)))) ) )
718  graph->evalOpParm(myBlendtextureprim, nodeidx, "blendtextureprim", time, graph->isDirect()?nullptr:depnode);
719  myUseskinmask = false;
720  if (true && ( (true&&!(((getLegacymasking()==0)))) ) )
721  graph->evalOpParm(myUseskinmask, nodeidx, "useskinmask", time, graph->isDirect()?nullptr:depnode);
722  mySkinmaskattrib = "clumpmask"_UTsh;
723  if (true && ( (true&&!(((getUseskinmask()==0))||((getLegacymasking()==0)))) ) )
724  graph->evalOpParm(mySkinmaskattrib, nodeidx, "skinmaskattrib", time, graph->isDirect()?nullptr:depnode);
725  myClumpsize = 0.05;
726  if (true)
727  graph->evalOpParm(myClumpsize, nodeidx, "clumpsize", time, graph->isDirect()?nullptr:depnode);
728  myClumpsizeoverride = 0;
729  if (true)
730  graph->evalOpParm(myClumpsizeoverride, nodeidx, "clumpsizeoverride", time, graph->isDirect()?nullptr:depnode);
731  myClumpsizeoptions = 0;
732  if (true)
733  graph->evalOpParm(myClumpsizeoptions, nodeidx, "clumpsizeoptions", time, graph->isDirect()?nullptr:depnode);
734  myClumpsizeinrange = UT_Vector2D(0,1);
735  if (true && ( (true&&!(((int64(getClumpsizeoverride())==0))||((getClumpsizeoptions()!=1)&&(getClumpsizeoptions()!=3)))) ) )
736  graph->evalOpParm(myClumpsizeinrange, nodeidx, "clumpsizeinrange", time, graph->isDirect()?nullptr:depnode);
737  myClumpsizeoutrange = UT_Vector2D(0,1);
738  if (true && ( (true&&!(((int64(getClumpsizeoverride())==0))||((getClumpsizeoptions()!=1)&&(getClumpsizeoptions()!=3)))) ) )
739  graph->evalOpParm(myClumpsizeoutrange, nodeidx, "clumpsizeoutrange", time, graph->isDirect()?nullptr:depnode);
740  myClumpsizeremapramp = UT_SharedPtr<UT_Ramp>(0);
741  if (true && ( (true&&!(((getClumpsizeoptions()!=2)&&(getClumpsizeoptions()!=3)))) ) )
742  graph->evalOpParm(myClumpsizeremapramp, nodeidx, "clumpsizeremapramp", time, graph->isDirect()?nullptr:depnode);
743  myClumpsizeattrib = "clumpsize"_UTsh;
744  if (true && ( (true&&!(((int64(getClumpsizeoverride())!=1)))) ) )
745  graph->evalOpParm(myClumpsizeattrib, nodeidx, "clumpsizeattrib", time, graph->isDirect()?nullptr:depnode);
746  myClumpsizetexture = ""_UTsh;
747  if (true && ( (true&&!(((int64(getClumpsizeoverride())!=2)))) ) )
748  graph->evalOpParm(myClumpsizetexture, nodeidx, "clumpsizetexture", time, graph->isDirect()?nullptr:depnode);
749  myClumpsizetextureprim = "mask"_UTsh;
750  if (true && ( (true&&!(((int64(getClumpsizeoverride())!=3)))) ) )
751  graph->evalOpParm(myClumpsizetextureprim, nodeidx, "clumpsizetextureprim", time, graph->isDirect()?nullptr:depnode);
752  mySearchbeyondradius = true;
753  if (true)
754  graph->evalOpParm(mySearchbeyondradius, nodeidx, "searchbeyondradius", time, graph->isDirect()?nullptr:depnode);
755  myClumpwithinclumps = true;
756  if (true)
757  graph->evalOpParm(myClumpwithinclumps, nodeidx, "clumpwithinclumps", time, graph->isDirect()?nullptr:depnode);
758  myCrossoverrate = 0.2;
759  if (true)
760  graph->evalOpParm(myCrossoverrate, nodeidx, "crossoverrate", time, graph->isDirect()?nullptr:depnode);
761  mySeed = 0;
762  if (true)
763  graph->evalOpParm(mySeed, nodeidx, "seed", time, graph->isDirect()?nullptr:depnode);
764  myMethod = 1;
765  if (true)
766  graph->evalOpParm(myMethod, nodeidx, "method", time, graph->isDirect()?nullptr:depnode);
767  myPreservelength = true;
768  if (true)
769  graph->evalOpParm(myPreservelength, nodeidx, "preservelength", time, graph->isDirect()?nullptr:depnode);
770  myExtendtomatch = 1;
771  if (true && ( (true&&!(((getPreservelength()==0)))) ) )
772  graph->evalOpParm(myExtendtomatch, nodeidx, "extendtomatch", time, graph->isDirect()?nullptr:depnode);
773  myShortentomatch = 1;
774  if (true && ( (true&&!(((getPreservelength()==0)))) ) )
775  graph->evalOpParm(myShortentomatch, nodeidx, "shortentomatch", time, graph->isDirect()?nullptr:depnode);
776  myAccuratebundling = true;
777  if (true)
778  graph->evalOpParm(myAccuratebundling, nodeidx, "accuratebundling", time, graph->isDirect()?nullptr:depnode);
779  myHairwidth = 0.001;
780  if (true && ( (true&&!(((getAccuratebundling()==0)))) ) )
781  graph->evalOpParm(myHairwidth, nodeidx, "hairwidth", time, graph->isDirect()?nullptr:depnode);
782  myHairwidthscale = 1;
783  if (true && ( (true&&!(((getAccuratebundling()==0)))) ) )
784  graph->evalOpParm(myHairwidthscale, nodeidx, "hairwidthscale", time, graph->isDirect()?nullptr:depnode);
785  myTightness = 1;
786  if (true)
787  graph->evalOpParm(myTightness, nodeidx, "tightness", time, graph->isDirect()?nullptr:depnode);
788  myTightnessoverride = 0;
789  if (true)
790  graph->evalOpParm(myTightnessoverride, nodeidx, "tightnessoverride", time, graph->isDirect()?nullptr:depnode);
791  myTightnessoptions = 0;
792  if (true)
793  graph->evalOpParm(myTightnessoptions, nodeidx, "tightnessoptions", time, graph->isDirect()?nullptr:depnode);
794  myTightnessinrange = UT_Vector2D(0,1);
795  if (true && ( (true&&!(((int64(getTightnessoverride())==0))||((getTightnessoptions()!=1)&&(getTightnessoptions()!=3)))) ) )
796  graph->evalOpParm(myTightnessinrange, nodeidx, "tightnessinrange", time, graph->isDirect()?nullptr:depnode);
797  myTightnessoutrange = UT_Vector2D(0,1);
798  if (true && ( (true&&!(((int64(getTightnessoverride())==0))||((getTightnessoptions()!=1)&&(getTightnessoptions()!=3)))) ) )
799  graph->evalOpParm(myTightnessoutrange, nodeidx, "tightnessoutrange", time, graph->isDirect()?nullptr:depnode);
800  myTightnessremapramp = UT_SharedPtr<UT_Ramp>(0);
801  if (true && ( (true&&!(((getTightnessoptions()!=2)&&(getTightnessoptions()!=3)))) ) )
802  graph->evalOpParm(myTightnessremapramp, nodeidx, "tightnessremapramp", time, graph->isDirect()?nullptr:depnode);
803  myTightnesscurveattrib = "tightness"_UTsh;
804  if (true && ( (true&&!(((int64(getTightnessoverride())!=2)))) ) )
805  graph->evalOpParm(myTightnesscurveattrib, nodeidx, "tightnesscurveattrib", time, graph->isDirect()?nullptr:depnode);
806  myTightnessclumpattrib = "tightness"_UTsh;
807  if (true && ( (true&&!(((int64(getTightnessoverride())!=1)))) ) )
808  graph->evalOpParm(myTightnessclumpattrib, nodeidx, "tightnessclumpattrib", time, graph->isDirect()?nullptr:depnode);
809  myTightnessattrib = "tightness"_UTsh;
810  if (true && ( (true&&!(((int64(getTightnessoverride())!=3)))) ) )
811  graph->evalOpParm(myTightnessattrib, nodeidx, "tightnessattrib", time, graph->isDirect()?nullptr:depnode);
812  myTightnesstexture = ""_UTsh;
813  if (true && ( (true&&!(((int64(getTightnessoverride())!=4)))) ) )
814  graph->evalOpParm(myTightnesstexture, nodeidx, "tightnesstexture", time, graph->isDirect()?nullptr:depnode);
815  myTightnesstextureprim = "mask"_UTsh;
816  if (true && ( (true&&!(((int64(getTightnessoverride())!=5)))) ) )
817  graph->evalOpParm(myTightnesstextureprim, nodeidx, "tightnesstextureprim", time, graph->isDirect()?nullptr:depnode);
818  myStrayamount = 1;
819  if (true)
820  graph->evalOpParm(myStrayamount, nodeidx, "strayamount", time, graph->isDirect()?nullptr:depnode);
821  myStrayamountoverride = 0;
822  if (true)
823  graph->evalOpParm(myStrayamountoverride, nodeidx, "strayamountoverride", time, graph->isDirect()?nullptr:depnode);
824  myStrayamountoptions = 0;
825  if (true)
826  graph->evalOpParm(myStrayamountoptions, nodeidx, "strayamountoptions", time, graph->isDirect()?nullptr:depnode);
827  myStrayamountinrange = UT_Vector2D(0,1);
828  if (true && ( (true&&!(((int64(getStrayamountoverride())==0))||((getStrayamountoptions()!=1)&&(getStrayamountoptions()!=3)))) ) )
829  graph->evalOpParm(myStrayamountinrange, nodeidx, "strayamountinrange", time, graph->isDirect()?nullptr:depnode);
830  myStrayamountoutrange = UT_Vector2D(0,1);
831  if (true && ( (true&&!(((int64(getStrayamountoverride())==0))||((getStrayamountoptions()!=1)&&(getStrayamountoptions()!=3)))) ) )
832  graph->evalOpParm(myStrayamountoutrange, nodeidx, "strayamountoutrange", time, graph->isDirect()?nullptr:depnode);
833  myStrayamountremapramp = UT_SharedPtr<UT_Ramp>(0);
834  if (true && ( (true&&!(((getStrayamountoptions()!=2)&&(getStrayamountoptions()!=3)))) ) )
835  graph->evalOpParm(myStrayamountremapramp, nodeidx, "strayamountremapramp", time, graph->isDirect()?nullptr:depnode);
836  myStrayamountcurveattrib = "strayamount"_UTsh;
837  if (true && ( (true&&!(((int64(getStrayamountoverride())!=2)))) ) )
838  graph->evalOpParm(myStrayamountcurveattrib, nodeidx, "strayamountcurveattrib", time, graph->isDirect()?nullptr:depnode);
839  myStrayamountclumpattrib = "strayamount"_UTsh;
840  if (true && ( (true&&!(((int64(getStrayamountoverride())!=1)))) ) )
841  graph->evalOpParm(myStrayamountclumpattrib, nodeidx, "strayamountclumpattrib", time, graph->isDirect()?nullptr:depnode);
842  myStrayamountattrib = "strayamount"_UTsh;
843  if (true && ( (true&&!(((int64(getStrayamountoverride())!=3)))) ) )
844  graph->evalOpParm(myStrayamountattrib, nodeidx, "strayamountattrib", time, graph->isDirect()?nullptr:depnode);
845  myStrayamounttexture = ""_UTsh;
846  if (true && ( (true&&!(((int64(getStrayamountoverride())!=4)))) ) )
847  graph->evalOpParm(myStrayamounttexture, nodeidx, "strayamounttexture", time, graph->isDirect()?nullptr:depnode);
848  myStrayamounttextureprim = "mask"_UTsh;
849  if (true && ( (true&&!(((int64(getStrayamountoverride())!=5)))) ) )
850  graph->evalOpParm(myStrayamounttextureprim, nodeidx, "strayamounttextureprim", time, graph->isDirect()?nullptr:depnode);
851  myStrayrate = 0;
852  if (true)
853  graph->evalOpParm(myStrayrate, nodeidx, "strayrate", time, graph->isDirect()?nullptr:depnode);
854  myStrayrateoverride = 0;
855  if (true)
856  graph->evalOpParm(myStrayrateoverride, nodeidx, "strayrateoverride", time, graph->isDirect()?nullptr:depnode);
857  myStrayrateoptions = 0;
858  if (true)
859  graph->evalOpParm(myStrayrateoptions, nodeidx, "strayrateoptions", time, graph->isDirect()?nullptr:depnode);
860  myStrayrateinrange = UT_Vector2D(0,1);
861  if (true && ( (true&&!(((int64(getStrayrateoverride())==0))||((getStrayrateoptions()!=1)&&(getStrayrateoptions()!=3)))) ) )
862  graph->evalOpParm(myStrayrateinrange, nodeidx, "strayrateinrange", time, graph->isDirect()?nullptr:depnode);
863  myStrayrateoutrange = UT_Vector2D(0,1);
864  if (true && ( (true&&!(((int64(getStrayrateoverride())==0))||((getStrayrateoptions()!=1)&&(getStrayrateoptions()!=3)))) ) )
865  graph->evalOpParm(myStrayrateoutrange, nodeidx, "strayrateoutrange", time, graph->isDirect()?nullptr:depnode);
866  myStrayrateremapramp = UT_SharedPtr<UT_Ramp>(0);
867  if (true && ( (true&&!(((getStrayrateoptions()!=2)&&(getStrayrateoptions()!=3)))) ) )
868  graph->evalOpParm(myStrayrateremapramp, nodeidx, "strayrateremapramp", time, graph->isDirect()?nullptr:depnode);
869  myStrayratecurveattrib = "strayrate"_UTsh;
870  if (true && ( (true&&!(((int64(getStrayrateoverride())!=2)))) ) )
871  graph->evalOpParm(myStrayratecurveattrib, nodeidx, "strayratecurveattrib", time, graph->isDirect()?nullptr:depnode);
872  myStrayrateclumpattrib = "strayrate"_UTsh;
873  if (true && ( (true&&!(((int64(getStrayrateoverride())!=1)))) ) )
874  graph->evalOpParm(myStrayrateclumpattrib, nodeidx, "strayrateclumpattrib", time, graph->isDirect()?nullptr:depnode);
875  myStrayrateattrib = "strayrate"_UTsh;
876  if (true && ( (true&&!(((int64(getStrayrateoverride())!=3)))) ) )
877  graph->evalOpParm(myStrayrateattrib, nodeidx, "strayrateattrib", time, graph->isDirect()?nullptr:depnode);
878  myStrayratetexture = ""_UTsh;
879  if (true && ( (true&&!(((int64(getStrayrateoverride())!=4)))) ) )
880  graph->evalOpParm(myStrayratetexture, nodeidx, "strayratetexture", time, graph->isDirect()?nullptr:depnode);
881  myStrayratetextureprim = "mask"_UTsh;
882  if (true && ( (true&&!(((int64(getStrayrateoverride())!=5)))) ) )
883  graph->evalOpParm(myStrayratetextureprim, nodeidx, "strayratetextureprim", time, graph->isDirect()?nullptr:depnode);
884  myStrayfalloff = 1;
885  if (true)
886  graph->evalOpParm(myStrayfalloff, nodeidx, "strayfalloff", time, graph->isDirect()?nullptr:depnode);
887  myStrayfalloffoverride = 0;
888  if (true)
889  graph->evalOpParm(myStrayfalloffoverride, nodeidx, "strayfalloffoverride", time, graph->isDirect()?nullptr:depnode);
890  myStrayfalloffoptions = 0;
891  if (true)
892  graph->evalOpParm(myStrayfalloffoptions, nodeidx, "strayfalloffoptions", time, graph->isDirect()?nullptr:depnode);
893  myStrayfalloffinrange = UT_Vector2D(0,1);
894  if (true && ( (true&&!(((int64(getStrayfalloffoverride())==0))||((getStrayfalloffoptions()!=1)&&(getStrayfalloffoptions()!=3)))) ) )
895  graph->evalOpParm(myStrayfalloffinrange, nodeidx, "strayfalloffinrange", time, graph->isDirect()?nullptr:depnode);
896  myStrayfalloffoutrange = UT_Vector2D(0,1);
897  if (true && ( (true&&!(((int64(getStrayfalloffoverride())==0))||((getStrayfalloffoptions()!=1)&&(getStrayfalloffoptions()!=3)))) ) )
898  graph->evalOpParm(myStrayfalloffoutrange, nodeidx, "strayfalloffoutrange", time, graph->isDirect()?nullptr:depnode);
899  myStrayfalloffremapramp = UT_SharedPtr<UT_Ramp>(0);
900  if (true && ( (true&&!(((getStrayfalloffoptions()!=2)&&(getStrayfalloffoptions()!=3)))) ) )
901  graph->evalOpParm(myStrayfalloffremapramp, nodeidx, "strayfalloffremapramp", time, graph->isDirect()?nullptr:depnode);
902  myStrayfalloffcurveattrib = "strayfalloff"_UTsh;
903  if (true && ( (true&&!(((int64(getStrayfalloffoverride())!=2)))) ) )
904  graph->evalOpParm(myStrayfalloffcurveattrib, nodeidx, "strayfalloffcurveattrib", time, graph->isDirect()?nullptr:depnode);
905  myStrayfalloffclumpattrib = "strayfalloff"_UTsh;
906  if (true && ( (true&&!(((int64(getStrayfalloffoverride())!=1)))) ) )
907  graph->evalOpParm(myStrayfalloffclumpattrib, nodeidx, "strayfalloffclumpattrib", time, graph->isDirect()?nullptr:depnode);
908  myStrayfalloffattrib = "strayfalloff"_UTsh;
909  if (true && ( (true&&!(((int64(getStrayfalloffoverride())!=3)))) ) )
910  graph->evalOpParm(myStrayfalloffattrib, nodeidx, "strayfalloffattrib", time, graph->isDirect()?nullptr:depnode);
911  myStrayfallofftexture = ""_UTsh;
912  if (true && ( (true&&!(((int64(getStrayfalloffoverride())!=4)))) ) )
913  graph->evalOpParm(myStrayfallofftexture, nodeidx, "strayfallofftexture", time, graph->isDirect()?nullptr:depnode);
914  myStrayfallofftextureprim = "mask"_UTsh;
915  if (true && ( (true&&!(((int64(getStrayfalloffoverride())!=5)))) ) )
916  graph->evalOpParm(myStrayfallofftextureprim, nodeidx, "strayfallofftextureprim", time, graph->isDirect()?nullptr:depnode);
917  myClumpprofile = UT_Ramp::buildFromDefault("1pos ( 0 ) 1value ( 1 ) 1interp ( bspline ) 2pos ( 0.14254385232925415 ) 2value ( 0.48605579137802124 ) 2interp ( bspline ) 3pos ( 0.56798243522644043 ) 3value ( 0.11952191591262817 ) 3interp ( bspline ) 4pos ( 1 ) 4value ( 0 ) 4interp ( bspline )");
918  if (true)
919  graph->evalOpParm(myClumpprofile, nodeidx, "clumpprofile", time, graph->isDirect()?nullptr:depnode);
920  myIterations = 1;
921  if (true)
922  graph->evalOpParm(myIterations, nodeidx, "iterations", time, graph->isDirect()?nullptr:depnode);
923  myIterationsoverride = 0;
924  if (true)
925  graph->evalOpParm(myIterationsoverride, nodeidx, "iterationsoverride", time, graph->isDirect()?nullptr:depnode);
926  myIterationsoptions = 0;
927  if (true)
928  graph->evalOpParm(myIterationsoptions, nodeidx, "iterationsoptions", time, graph->isDirect()?nullptr:depnode);
929  myIterationsinrange = UT_Vector2D(0,1);
930  if (true && ( (true&&!(((int64(getIterationsoverride())==0))||((getIterationsoptions()!=1)&&(getIterationsoptions()!=3)))) ) )
931  graph->evalOpParm(myIterationsinrange, nodeidx, "iterationsinrange", time, graph->isDirect()?nullptr:depnode);
932  myIterationsoutrange = UT_Vector2D(0,1);
933  if (true && ( (true&&!(((int64(getIterationsoverride())==0))||((getIterationsoptions()!=1)&&(getIterationsoptions()!=3)))) ) )
934  graph->evalOpParm(myIterationsoutrange, nodeidx, "iterationsoutrange", time, graph->isDirect()?nullptr:depnode);
935  myIterationsremapramp = UT_SharedPtr<UT_Ramp>(0);
936  if (true && ( (true&&!(((getIterationsoptions()!=2)&&(getIterationsoptions()!=3)))) ) )
937  graph->evalOpParm(myIterationsremapramp, nodeidx, "iterationsremapramp", time, graph->isDirect()?nullptr:depnode);
938  myIterationscurveattrib = "clumpiterations"_UTsh;
939  if (true && ( (true&&!(((int64(getIterationsoverride())!=1)))) ) )
940  graph->evalOpParm(myIterationscurveattrib, nodeidx, "iterationscurveattrib", time, graph->isDirect()?nullptr:depnode);
941  myIterationsattrib = "clumpiterations"_UTsh;
942  if (true && ( (true&&!(((int64(getIterationsoverride())!=2)))) ) )
943  graph->evalOpParm(myIterationsattrib, nodeidx, "iterationsattrib", time, graph->isDirect()?nullptr:depnode);
944  myIterationstexture = ""_UTsh;
945  if (true && ( (true&&!(((int64(getIterationsoverride())!=3)))) ) )
946  graph->evalOpParm(myIterationstexture, nodeidx, "iterationstexture", time, graph->isDirect()?nullptr:depnode);
947  myIterationstextureprim = "mask"_UTsh;
948  if (true && ( (true&&!(((int64(getIterationsoverride())!=4)))) ) )
949  graph->evalOpParm(myIterationstextureprim, nodeidx, "iterationstextureprim", time, graph->isDirect()?nullptr:depnode);
950  mySizereduction = 0.4;
951  if (true && ( (true&&!(((getIterations()<=1)))) ) )
952  graph->evalOpParm(mySizereduction, nodeidx, "sizereduction", time, graph->isDirect()?nullptr:depnode);
953  mySizereductionoverride = 0;
954  if (true && ( (true&&!(((getIterations()<=1)))) ) )
955  graph->evalOpParm(mySizereductionoverride, nodeidx, "sizereductionoverride", time, graph->isDirect()?nullptr:depnode);
956  mySizereductionoptions = 0;
957  if (true && ( (true&&!(((getIterations()<=1)))) ) )
958  graph->evalOpParm(mySizereductionoptions, nodeidx, "sizereductionoptions", time, graph->isDirect()?nullptr:depnode);
959  mySizereductioninrange = UT_Vector2D(0,1);
960  if (true && ( (true&&!(((getIterations()<=1))||((int64(getSizereductionoverride())==0))||((getSizereductionoptions()!=1)&&(getSizereductionoptions()!=3)))) ) )
961  graph->evalOpParm(mySizereductioninrange, nodeidx, "sizereductioninrange", time, graph->isDirect()?nullptr:depnode);
962  mySizereductionoutrange = UT_Vector2D(0,1);
963  if (true && ( (true&&!(((getIterations()<=1))||((int64(getSizereductionoverride())==0))||((getSizereductionoptions()!=1)&&(getSizereductionoptions()!=3)))) ) )
964  graph->evalOpParm(mySizereductionoutrange, nodeidx, "sizereductionoutrange", time, graph->isDirect()?nullptr:depnode);
965  mySizereductionremapramp = UT_SharedPtr<UT_Ramp>(0);
966  if (true && ( (true&&!(((getIterations()<=1))||((getSizereductionoptions()!=2)&&(getSizereductionoptions()!=3)))) ) )
967  graph->evalOpParm(mySizereductionremapramp, nodeidx, "sizereductionremapramp", time, graph->isDirect()?nullptr:depnode);
968  mySizereductionattrib = "clumpsizereduction"_UTsh;
969  if (true && ( (true&&!(((getIterations()<=1))||((int64(getSizereductionoverride())!=1)))) ) )
970  graph->evalOpParm(mySizereductionattrib, nodeidx, "sizereductionattrib", time, graph->isDirect()?nullptr:depnode);
971  mySizereductiontexture = ""_UTsh;
972  if (true && ( (true&&!(((getIterations()<=1))||((int64(getSizereductionoverride())!=2)))) ) )
973  graph->evalOpParm(mySizereductiontexture, nodeidx, "sizereductiontexture", time, graph->isDirect()?nullptr:depnode);
974  mySizereductiontextureprim = "mask"_UTsh;
975  if (true && ( (true&&!(((getIterations()<=1))||((int64(getSizereductionoverride())!=3)))) ) )
976  graph->evalOpParm(mySizereductiontextureprim, nodeidx, "sizereductiontextureprim", time, graph->isDirect()?nullptr:depnode);
977  myGoalfeedback = 0.1;
978  if (true && ( (true&&!(((getIterations()<=1)))) ) )
979  graph->evalOpParm(myGoalfeedback, nodeidx, "goalfeedback", time, graph->isDirect()?nullptr:depnode);
980  myGoalfeedbackoverride = 0;
981  if (true && ( (true&&!(((getIterations()<=1)))) ) )
982  graph->evalOpParm(myGoalfeedbackoverride, nodeidx, "goalfeedbackoverride", time, graph->isDirect()?nullptr:depnode);
983  myGoalfeedbackoptions = 0;
984  if (true && ( (true&&!(((getIterations()<=1)))) ) )
985  graph->evalOpParm(myGoalfeedbackoptions, nodeidx, "goalfeedbackoptions", time, graph->isDirect()?nullptr:depnode);
986  myGoalfeedbackinrange = UT_Vector2D(0,1);
987  if (true && ( (true&&!(((getIterations()<=1))||((int64(getGoalfeedbackoverride())==0))||((getGoalfeedbackoptions()!=1)&&(getGoalfeedbackoptions()!=3)))) ) )
988  graph->evalOpParm(myGoalfeedbackinrange, nodeidx, "goalfeedbackinrange", time, graph->isDirect()?nullptr:depnode);
989  myGoalfeedbackoutrange = UT_Vector2D(0,1);
990  if (true && ( (true&&!(((getIterations()<=1))||((int64(getGoalfeedbackoverride())==0))||((getGoalfeedbackoptions()!=1)&&(getGoalfeedbackoptions()!=3)))) ) )
991  graph->evalOpParm(myGoalfeedbackoutrange, nodeidx, "goalfeedbackoutrange", time, graph->isDirect()?nullptr:depnode);
992  myGoalfeedbackremapramp = UT_SharedPtr<UT_Ramp>(0);
993  if (true && ( (true&&!(((getIterations()<=1))||((getGoalfeedbackoptions()!=2)&&(getGoalfeedbackoptions()!=3)))) ) )
994  graph->evalOpParm(myGoalfeedbackremapramp, nodeidx, "goalfeedbackremapramp", time, graph->isDirect()?nullptr:depnode);
995  myGoalfeedbackattrib = "clumpgoalfeedback"_UTsh;
996  if (true && ( (true&&!(((getIterations()<=1))||((int64(getGoalfeedbackoverride())!=1)))) ) )
997  graph->evalOpParm(myGoalfeedbackattrib, nodeidx, "goalfeedbackattrib", time, graph->isDirect()?nullptr:depnode);
998  myGoalfeedbacktexture = ""_UTsh;
999  if (true && ( (true&&!(((getIterations()<=1))||((int64(getGoalfeedbackoverride())!=2)))) ) )
1000  graph->evalOpParm(myGoalfeedbacktexture, nodeidx, "goalfeedbacktexture", time, graph->isDirect()?nullptr:depnode);
1001  myGoalfeedbacktextureprim = "mask"_UTsh;
1002  if (true && ( (true&&!(((getIterations()<=1))||((int64(getGoalfeedbackoverride())!=3)))) ) )
1003  graph->evalOpParm(myGoalfeedbacktextureprim, nodeidx, "goalfeedbacktextureprim", time, graph->isDirect()?nullptr:depnode);
1004  myTightnessreduction = 0.2;
1005  if (true && ( (true&&!(((getIterations()<=1)))) ) )
1006  graph->evalOpParm(myTightnessreduction, nodeidx, "tightnessreduction", time, graph->isDirect()?nullptr:depnode);
1007  myTightnessreductionoverride = 0;
1008  if (true && ( (true&&!(((getIterations()<=1)))) ) )
1009  graph->evalOpParm(myTightnessreductionoverride, nodeidx, "tightnessreductionoverride", time, graph->isDirect()?nullptr:depnode);
1010  myTightnessreductionoptions = 0;
1011  if (true && ( (true&&!(((getIterations()<=1)))) ) )
1012  graph->evalOpParm(myTightnessreductionoptions, nodeidx, "tightnessreductionoptions", time, graph->isDirect()?nullptr:depnode);
1013  myTightnessreductioninrange = UT_Vector2D(0,1);
1014  if (true && ( (true&&!(((getIterations()<=1))||((int64(getTightnessreductionoverride())==0))||((getTightnessreductionoptions()!=1)&&(getTightnessreductionoptions()!=3)))) ) )
1015  graph->evalOpParm(myTightnessreductioninrange, nodeidx, "tightnessreductioninrange", time, graph->isDirect()?nullptr:depnode);
1016  myTightnessreductionoutrange = UT_Vector2D(0,1);
1017  if (true && ( (true&&!(((getIterations()<=1))||((int64(getTightnessreductionoverride())==0))||((getTightnessreductionoptions()!=1)&&(getTightnessreductionoptions()!=3)))) ) )
1018  graph->evalOpParm(myTightnessreductionoutrange, nodeidx, "tightnessreductionoutrange", time, graph->isDirect()?nullptr:depnode);
1019  myTightnessreductionremapramp = UT_SharedPtr<UT_Ramp>(0);
1020  if (true && ( (true&&!(((getIterations()<=1))||((getTightnessreductionoptions()!=2)&&(getTightnessreductionoptions()!=3)))) ) )
1021  graph->evalOpParm(myTightnessreductionremapramp, nodeidx, "tightnessreductionremapramp", time, graph->isDirect()?nullptr:depnode);
1022  myTightnessreductioncurveattrib = "clumptightnessreduction"_UTsh;
1023  if (true && ( (true&&!(((getIterations()<=1))||((int64(getTightnessreductionoverride())!=1)))) ) )
1024  graph->evalOpParm(myTightnessreductioncurveattrib, nodeidx, "tightnessreductioncurveattrib", time, graph->isDirect()?nullptr:depnode);
1025  myTightnessreductionattrib = "clumptightnessreduction"_UTsh;
1026  if (true && ( (true&&!(((getIterations()<=1))||((int64(getTightnessreductionoverride())!=2)))) ) )
1027  graph->evalOpParm(myTightnessreductionattrib, nodeidx, "tightnessreductionattrib", time, graph->isDirect()?nullptr:depnode);
1028  myTightnessreductiontexture = ""_UTsh;
1029  if (true && ( (true&&!(((getIterations()<=1))||((int64(getTightnessreductionoverride())!=3)))) ) )
1030  graph->evalOpParm(myTightnessreductiontexture, nodeidx, "tightnessreductiontexture", time, graph->isDirect()?nullptr:depnode);
1031  myTightnessreductiontextureprim = "mask"_UTsh;
1032  if (true && ( (true&&!(((getIterations()<=1))||((int64(getTightnessreductionoverride())!=4)))) ) )
1033  graph->evalOpParm(myTightnessreductiontextureprim, nodeidx, "tightnessreductiontextureprim", time, graph->isDirect()?nullptr:depnode);
1034  myEnablecurling = false;
1035  if (true)
1036  graph->evalOpParm(myEnablecurling, nodeidx, "enablecurling", time, graph->isDirect()?nullptr:depnode);
1037  myCurlamp = 0;
1038  if (true && ( (true&&!(((getEnablecurling()==0)))) ) )
1039  graph->evalOpParm(myCurlamp, nodeidx, "curlamp", time, graph->isDirect()?nullptr:depnode);
1040  myCurlampoverride = 0;
1041  if (true && ( (true&&!(((getEnablecurling()==0)))) ) )
1042  graph->evalOpParm(myCurlampoverride, nodeidx, "curlampoverride", time, graph->isDirect()?nullptr:depnode);
1043  myCurlampoptions = 0;
1044  if (true && ( (true&&!(((getEnablecurling()==0)))) ) )
1045  graph->evalOpParm(myCurlampoptions, nodeidx, "curlampoptions", time, graph->isDirect()?nullptr:depnode);
1046  myCurlampinrange = UT_Vector2D(0,1);
1047  if (true && ( (true&&!(((int64(getCurlampoverride())==0))||((getEnablecurling()==0))||((getCurlampoptions()!=1)&&(getCurlampoptions()!=3)))) ) )
1048  graph->evalOpParm(myCurlampinrange, nodeidx, "curlampinrange", time, graph->isDirect()?nullptr:depnode);
1049  myCurlampoutrange = UT_Vector2D(0,1);
1050  if (true && ( (true&&!(((int64(getCurlampoverride())==0))||((getEnablecurling()==0))||((getCurlampoptions()!=1)&&(getCurlampoptions()!=3)))) ) )
1051  graph->evalOpParm(myCurlampoutrange, nodeidx, "curlampoutrange", time, graph->isDirect()?nullptr:depnode);
1052  myCurlampremapramp = UT_SharedPtr<UT_Ramp>(0);
1053  if (true && ( (true&&!(((getEnablecurling()==0))||((getCurlampoptions()!=2)&&(getCurlampoptions()!=3)))) ) )
1054  graph->evalOpParm(myCurlampremapramp, nodeidx, "curlampremapramp", time, graph->isDirect()?nullptr:depnode);
1055  myCurlampcurveattrib = "clumpcurlamp"_UTsh;
1056  if (true && ( (true&&!(((getEnablecurling()==0))||((int64(getCurlampoverride())!=1)))) ) )
1057  graph->evalOpParm(myCurlampcurveattrib, nodeidx, "curlampcurveattrib", time, graph->isDirect()?nullptr:depnode);
1058  myCurlampattrib = "clumpcurlamp"_UTsh;
1059  if (true && ( (true&&!(((getEnablecurling()==0))||((int64(getCurlampoverride())!=2)))) ) )
1060  graph->evalOpParm(myCurlampattrib, nodeidx, "curlampattrib", time, graph->isDirect()?nullptr:depnode);
1061  myCurlamptexture = ""_UTsh;
1062  if (true && ( (true&&!(((getEnablecurling()==0))||((int64(getCurlampoverride())!=3)))) ) )
1063  graph->evalOpParm(myCurlamptexture, nodeidx, "curlamptexture", time, graph->isDirect()?nullptr:depnode);
1064  myCurlamptextureprim = "mask"_UTsh;
1065  if (true && ( (true&&!(((getEnablecurling()==0))||((int64(getCurlampoverride())!=4)))) ) )
1066  graph->evalOpParm(myCurlamptextureprim, nodeidx, "curlamptextureprim", time, graph->isDirect()?nullptr:depnode);
1067  myCurlampramp = UT_SharedPtr<UT_Ramp>(0);
1068  if (true && ( (true&&!(((getEnablecurling()==0)))) ) )
1069  graph->evalOpParm(myCurlampramp, nodeidx, "curlampramp", time, graph->isDirect()?nullptr:depnode);
1070  myCurlfreq = 5;
1071  if (true && ( (true&&!(((getEnablecurling()==0)))) ) )
1072  graph->evalOpParm(myCurlfreq, nodeidx, "curlfreq", time, graph->isDirect()?nullptr:depnode);
1073  myCurlfreqoverride = 0;
1074  if (true && ( (true&&!(((getEnablecurling()==0)))) ) )
1075  graph->evalOpParm(myCurlfreqoverride, nodeidx, "curlfreqoverride", time, graph->isDirect()?nullptr:depnode);
1076  myCurlfreqoptions = 0;
1077  if (true && ( (true&&!(((getEnablecurling()==0)))) ) )
1078  graph->evalOpParm(myCurlfreqoptions, nodeidx, "curlfreqoptions", time, graph->isDirect()?nullptr:depnode);
1079  myCurlfreqinrange = UT_Vector2D(0,1);
1080  if (true && ( (true&&!(((int64(getCurlfreqoverride())==0))||((getEnablecurling()==0))||((getCurlfreqoptions()!=1)&&(getCurlfreqoptions()!=3)))) ) )
1081  graph->evalOpParm(myCurlfreqinrange, nodeidx, "curlfreqinrange", time, graph->isDirect()?nullptr:depnode);
1082  myCurlfreqoutrange = UT_Vector2D(0,1);
1083  if (true && ( (true&&!(((int64(getCurlfreqoverride())==0))||((getEnablecurling()==0))||((getCurlfreqoptions()!=1)&&(getCurlfreqoptions()!=3)))) ) )
1084  graph->evalOpParm(myCurlfreqoutrange, nodeidx, "curlfreqoutrange", time, graph->isDirect()?nullptr:depnode);
1085  myCurlfreqremapramp = UT_SharedPtr<UT_Ramp>(0);
1086  if (true && ( (true&&!(((getEnablecurling()==0))||((getCurlfreqoptions()!=2)&&(getCurlfreqoptions()!=3)))) ) )
1087  graph->evalOpParm(myCurlfreqremapramp, nodeidx, "curlfreqremapramp", time, graph->isDirect()?nullptr:depnode);
1088  myCurlfreqcurveattrib = "clumpcurlfreq"_UTsh;
1089  if (true && ( (true&&!(((getEnablecurling()==0))||((int64(getCurlfreqoverride())!=1)))) ) )
1090  graph->evalOpParm(myCurlfreqcurveattrib, nodeidx, "curlfreqcurveattrib", time, graph->isDirect()?nullptr:depnode);
1091  myCurlfreqattrib = "clumpcurlfreq"_UTsh;
1092  if (true && ( (true&&!(((getEnablecurling()==0))||((int64(getCurlfreqoverride())!=2)))) ) )
1093  graph->evalOpParm(myCurlfreqattrib, nodeidx, "curlfreqattrib", time, graph->isDirect()?nullptr:depnode);
1094  myCurlfreqtexture = ""_UTsh;
1095  if (true && ( (true&&!(((getEnablecurling()==0))||((int64(getCurlfreqoverride())!=3)))) ) )
1096  graph->evalOpParm(myCurlfreqtexture, nodeidx, "curlfreqtexture", time, graph->isDirect()?nullptr:depnode);
1097  myCurlfreqtextureprim = "mask"_UTsh;
1098  if (true && ( (true&&!(((getEnablecurling()==0))||((int64(getCurlfreqoverride())!=4)))) ) )
1099  graph->evalOpParm(myCurlfreqtextureprim, nodeidx, "curlfreqtextureprim", time, graph->isDirect()?nullptr:depnode);
1100  myCurlfreqramp = UT_SharedPtr<UT_Ramp>(0);
1101  if (true && ( (true&&!(((getEnablecurling()==0)))) ) )
1102  graph->evalOpParm(myCurlfreqramp, nodeidx, "curlfreqramp", time, graph->isDirect()?nullptr:depnode);
1103  myClumpidinputattrib = "clumpid"_UTsh;
1104  if (true)
1105  graph->evalOpParm(myClumpidinputattrib, nodeidx, "clumpidinputattrib", time, graph->isDirect()?nullptr:depnode);
1106  myCreateclumpidattrib = true;
1107  if (true)
1108  graph->evalOpParm(myCreateclumpidattrib, nodeidx, "createclumpidattrib", time, graph->isDirect()?nullptr:depnode);
1109  myClumpidoutputattrib = "clumpid"_UTsh;
1110  if (true)
1111  graph->evalOpParm(myClumpidoutputattrib, nodeidx, "clumpidoutputattrib", time, graph->isDirect()?nullptr:depnode);
1112  myUseorientinputattrib = false;
1113  if (true)
1114  graph->evalOpParm(myUseorientinputattrib, nodeidx, "useorientinputattrib", time, graph->isDirect()?nullptr:depnode);
1115  myOrientinputattrib = "orient"_UTsh;
1116  if (true)
1117  graph->evalOpParm(myOrientinputattrib, nodeidx, "orientinputattrib", time, graph->isDirect()?nullptr:depnode);
1118  myCreatetightnessattrib = true;
1119  if (true)
1120  graph->evalOpParm(myCreatetightnessattrib, nodeidx, "createtightnessattrib", time, graph->isDirect()?nullptr:depnode);
1121  myTightnessoutputattrib = "tightness"_UTsh;
1122  if (true)
1123  graph->evalOpParm(myTightnessoutputattrib, nodeidx, "tightnessoutputattrib", time, graph->isDirect()?nullptr:depnode);
1124  myClumppointattribs = ""_UTsh;
1125  if (true)
1126  graph->evalOpParm(myClumppointattribs, nodeidx, "clumppointattribs", time, graph->isDirect()?nullptr:depnode);
1127  myClumpprimattribs = ""_UTsh;
1128  if (true)
1129  graph->evalOpParm(myClumpprimattribs, nodeidx, "clumpprimattribs", time, graph->isDirect()?nullptr:depnode);
1130 
1131  }
1132 
1133 
1134  void loadFromOpSubclass(const LoadParms &loadparms) override
1135  {
1136  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
1137  }
1138 
1139 
1140  void copyFrom(const OP_NodeParms *src) override
1141  {
1142  *this = *((const SOP_HairClumpParms *)src);
1143  }
1144 
1145  template <typename T>
1146  void
1147  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
1148  {
1149  if (idx.size() < 1)
1150  return;
1151  UT_ASSERT(idx.size() == instance.size()+1);
1152  if (idx.size() != instance.size()+1)
1153  return;
1154  switch (idx[0])
1155  {
1156  case 0:
1157  coerceValue(value, myLegacymasking);
1158  break;
1159  case 1:
1160  coerceValue(value, myUvattrib);
1161  break;
1162  case 2:
1163  coerceValue(value, myBlend);
1164  break;
1165  case 3:
1166  coerceValue(value, myBlendoverride);
1167  break;
1168  case 4:
1169  coerceValue(value, myBlendoptions);
1170  break;
1171  case 5:
1172  coerceValue(value, myBlendinrange);
1173  break;
1174  case 6:
1175  coerceValue(value, myBlendoutrange);
1176  break;
1177  case 7:
1178  coerceValue(value, myBlendremapramp);
1179  break;
1180  case 8:
1181  coerceValue(value, myBlendcurveattrib);
1182  break;
1183  case 9:
1184  coerceValue(value, myBlendattrib);
1185  break;
1186  case 10:
1187  coerceValue(value, myBlendtexture);
1188  break;
1189  case 11:
1190  coerceValue(value, myBlendtextureprim);
1191  break;
1192  case 12:
1193  coerceValue(value, myUseskinmask);
1194  break;
1195  case 13:
1196  coerceValue(value, mySkinmaskattrib);
1197  break;
1198  case 14:
1199  coerceValue(value, myClumpsize);
1200  break;
1201  case 15:
1202  coerceValue(value, myClumpsizeoverride);
1203  break;
1204  case 16:
1205  coerceValue(value, myClumpsizeoptions);
1206  break;
1207  case 17:
1208  coerceValue(value, myClumpsizeinrange);
1209  break;
1210  case 18:
1211  coerceValue(value, myClumpsizeoutrange);
1212  break;
1213  case 19:
1214  coerceValue(value, myClumpsizeremapramp);
1215  break;
1216  case 20:
1217  coerceValue(value, myClumpsizeattrib);
1218  break;
1219  case 21:
1220  coerceValue(value, myClumpsizetexture);
1221  break;
1222  case 22:
1223  coerceValue(value, myClumpsizetextureprim);
1224  break;
1225  case 23:
1226  coerceValue(value, mySearchbeyondradius);
1227  break;
1228  case 24:
1229  coerceValue(value, myClumpwithinclumps);
1230  break;
1231  case 25:
1232  coerceValue(value, myCrossoverrate);
1233  break;
1234  case 26:
1235  coerceValue(value, mySeed);
1236  break;
1237  case 27:
1238  coerceValue(value, myMethod);
1239  break;
1240  case 28:
1241  coerceValue(value, myPreservelength);
1242  break;
1243  case 29:
1244  coerceValue(value, myExtendtomatch);
1245  break;
1246  case 30:
1247  coerceValue(value, myShortentomatch);
1248  break;
1249  case 31:
1250  coerceValue(value, myAccuratebundling);
1251  break;
1252  case 32:
1253  coerceValue(value, myHairwidth);
1254  break;
1255  case 33:
1256  coerceValue(value, myHairwidthscale);
1257  break;
1258  case 34:
1259  coerceValue(value, myTightness);
1260  break;
1261  case 35:
1262  coerceValue(value, myTightnessoverride);
1263  break;
1264  case 36:
1265  coerceValue(value, myTightnessoptions);
1266  break;
1267  case 37:
1268  coerceValue(value, myTightnessinrange);
1269  break;
1270  case 38:
1271  coerceValue(value, myTightnessoutrange);
1272  break;
1273  case 39:
1274  coerceValue(value, myTightnessremapramp);
1275  break;
1276  case 40:
1277  coerceValue(value, myTightnesscurveattrib);
1278  break;
1279  case 41:
1280  coerceValue(value, myTightnessclumpattrib);
1281  break;
1282  case 42:
1283  coerceValue(value, myTightnessattrib);
1284  break;
1285  case 43:
1286  coerceValue(value, myTightnesstexture);
1287  break;
1288  case 44:
1289  coerceValue(value, myTightnesstextureprim);
1290  break;
1291  case 45:
1292  coerceValue(value, myStrayamount);
1293  break;
1294  case 46:
1295  coerceValue(value, myStrayamountoverride);
1296  break;
1297  case 47:
1298  coerceValue(value, myStrayamountoptions);
1299  break;
1300  case 48:
1301  coerceValue(value, myStrayamountinrange);
1302  break;
1303  case 49:
1304  coerceValue(value, myStrayamountoutrange);
1305  break;
1306  case 50:
1307  coerceValue(value, myStrayamountremapramp);
1308  break;
1309  case 51:
1310  coerceValue(value, myStrayamountcurveattrib);
1311  break;
1312  case 52:
1313  coerceValue(value, myStrayamountclumpattrib);
1314  break;
1315  case 53:
1316  coerceValue(value, myStrayamountattrib);
1317  break;
1318  case 54:
1319  coerceValue(value, myStrayamounttexture);
1320  break;
1321  case 55:
1322  coerceValue(value, myStrayamounttextureprim);
1323  break;
1324  case 56:
1325  coerceValue(value, myStrayrate);
1326  break;
1327  case 57:
1328  coerceValue(value, myStrayrateoverride);
1329  break;
1330  case 58:
1331  coerceValue(value, myStrayrateoptions);
1332  break;
1333  case 59:
1334  coerceValue(value, myStrayrateinrange);
1335  break;
1336  case 60:
1337  coerceValue(value, myStrayrateoutrange);
1338  break;
1339  case 61:
1340  coerceValue(value, myStrayrateremapramp);
1341  break;
1342  case 62:
1343  coerceValue(value, myStrayratecurveattrib);
1344  break;
1345  case 63:
1346  coerceValue(value, myStrayrateclumpattrib);
1347  break;
1348  case 64:
1349  coerceValue(value, myStrayrateattrib);
1350  break;
1351  case 65:
1352  coerceValue(value, myStrayratetexture);
1353  break;
1354  case 66:
1355  coerceValue(value, myStrayratetextureprim);
1356  break;
1357  case 67:
1358  coerceValue(value, myStrayfalloff);
1359  break;
1360  case 68:
1361  coerceValue(value, myStrayfalloffoverride);
1362  break;
1363  case 69:
1364  coerceValue(value, myStrayfalloffoptions);
1365  break;
1366  case 70:
1367  coerceValue(value, myStrayfalloffinrange);
1368  break;
1369  case 71:
1370  coerceValue(value, myStrayfalloffoutrange);
1371  break;
1372  case 72:
1373  coerceValue(value, myStrayfalloffremapramp);
1374  break;
1375  case 73:
1376  coerceValue(value, myStrayfalloffcurveattrib);
1377  break;
1378  case 74:
1379  coerceValue(value, myStrayfalloffclumpattrib);
1380  break;
1381  case 75:
1382  coerceValue(value, myStrayfalloffattrib);
1383  break;
1384  case 76:
1385  coerceValue(value, myStrayfallofftexture);
1386  break;
1387  case 77:
1388  coerceValue(value, myStrayfallofftextureprim);
1389  break;
1390  case 78:
1391  coerceValue(value, myClumpprofile);
1392  break;
1393  case 79:
1394  coerceValue(value, myIterations);
1395  break;
1396  case 80:
1397  coerceValue(value, myIterationsoverride);
1398  break;
1399  case 81:
1400  coerceValue(value, myIterationsoptions);
1401  break;
1402  case 82:
1403  coerceValue(value, myIterationsinrange);
1404  break;
1405  case 83:
1406  coerceValue(value, myIterationsoutrange);
1407  break;
1408  case 84:
1409  coerceValue(value, myIterationsremapramp);
1410  break;
1411  case 85:
1412  coerceValue(value, myIterationscurveattrib);
1413  break;
1414  case 86:
1415  coerceValue(value, myIterationsattrib);
1416  break;
1417  case 87:
1418  coerceValue(value, myIterationstexture);
1419  break;
1420  case 88:
1421  coerceValue(value, myIterationstextureprim);
1422  break;
1423  case 89:
1424  coerceValue(value, mySizereduction);
1425  break;
1426  case 90:
1427  coerceValue(value, mySizereductionoverride);
1428  break;
1429  case 91:
1430  coerceValue(value, mySizereductionoptions);
1431  break;
1432  case 92:
1433  coerceValue(value, mySizereductioninrange);
1434  break;
1435  case 93:
1436  coerceValue(value, mySizereductionoutrange);
1437  break;
1438  case 94:
1439  coerceValue(value, mySizereductionremapramp);
1440  break;
1441  case 95:
1442  coerceValue(value, mySizereductionattrib);
1443  break;
1444  case 96:
1445  coerceValue(value, mySizereductiontexture);
1446  break;
1447  case 97:
1448  coerceValue(value, mySizereductiontextureprim);
1449  break;
1450  case 98:
1451  coerceValue(value, myGoalfeedback);
1452  break;
1453  case 99:
1454  coerceValue(value, myGoalfeedbackoverride);
1455  break;
1456  case 100:
1457  coerceValue(value, myGoalfeedbackoptions);
1458  break;
1459  case 101:
1460  coerceValue(value, myGoalfeedbackinrange);
1461  break;
1462  case 102:
1463  coerceValue(value, myGoalfeedbackoutrange);
1464  break;
1465  case 103:
1466  coerceValue(value, myGoalfeedbackremapramp);
1467  break;
1468  case 104:
1469  coerceValue(value, myGoalfeedbackattrib);
1470  break;
1471  case 105:
1472  coerceValue(value, myGoalfeedbacktexture);
1473  break;
1474  case 106:
1475  coerceValue(value, myGoalfeedbacktextureprim);
1476  break;
1477  case 107:
1478  coerceValue(value, myTightnessreduction);
1479  break;
1480  case 108:
1481  coerceValue(value, myTightnessreductionoverride);
1482  break;
1483  case 109:
1484  coerceValue(value, myTightnessreductionoptions);
1485  break;
1486  case 110:
1487  coerceValue(value, myTightnessreductioninrange);
1488  break;
1489  case 111:
1490  coerceValue(value, myTightnessreductionoutrange);
1491  break;
1492  case 112:
1493  coerceValue(value, myTightnessreductionremapramp);
1494  break;
1495  case 113:
1496  coerceValue(value, myTightnessreductioncurveattrib);
1497  break;
1498  case 114:
1499  coerceValue(value, myTightnessreductionattrib);
1500  break;
1501  case 115:
1502  coerceValue(value, myTightnessreductiontexture);
1503  break;
1504  case 116:
1505  coerceValue(value, myTightnessreductiontextureprim);
1506  break;
1507  case 117:
1508  coerceValue(value, myEnablecurling);
1509  break;
1510  case 118:
1511  coerceValue(value, myCurlamp);
1512  break;
1513  case 119:
1514  coerceValue(value, myCurlampoverride);
1515  break;
1516  case 120:
1517  coerceValue(value, myCurlampoptions);
1518  break;
1519  case 121:
1520  coerceValue(value, myCurlampinrange);
1521  break;
1522  case 122:
1523  coerceValue(value, myCurlampoutrange);
1524  break;
1525  case 123:
1526  coerceValue(value, myCurlampremapramp);
1527  break;
1528  case 124:
1529  coerceValue(value, myCurlampcurveattrib);
1530  break;
1531  case 125:
1532  coerceValue(value, myCurlampattrib);
1533  break;
1534  case 126:
1535  coerceValue(value, myCurlamptexture);
1536  break;
1537  case 127:
1538  coerceValue(value, myCurlamptextureprim);
1539  break;
1540  case 128:
1541  coerceValue(value, myCurlampramp);
1542  break;
1543  case 129:
1544  coerceValue(value, myCurlfreq);
1545  break;
1546  case 130:
1547  coerceValue(value, myCurlfreqoverride);
1548  break;
1549  case 131:
1550  coerceValue(value, myCurlfreqoptions);
1551  break;
1552  case 132:
1553  coerceValue(value, myCurlfreqinrange);
1554  break;
1555  case 133:
1556  coerceValue(value, myCurlfreqoutrange);
1557  break;
1558  case 134:
1559  coerceValue(value, myCurlfreqremapramp);
1560  break;
1561  case 135:
1562  coerceValue(value, myCurlfreqcurveattrib);
1563  break;
1564  case 136:
1565  coerceValue(value, myCurlfreqattrib);
1566  break;
1567  case 137:
1568  coerceValue(value, myCurlfreqtexture);
1569  break;
1570  case 138:
1571  coerceValue(value, myCurlfreqtextureprim);
1572  break;
1573  case 139:
1574  coerceValue(value, myCurlfreqramp);
1575  break;
1576  case 140:
1577  coerceValue(value, myClumpidinputattrib);
1578  break;
1579  case 141:
1580  coerceValue(value, myCreateclumpidattrib);
1581  break;
1582  case 142:
1583  coerceValue(value, myClumpidoutputattrib);
1584  break;
1585  case 143:
1586  coerceValue(value, myUseorientinputattrib);
1587  break;
1588  case 144:
1589  coerceValue(value, myOrientinputattrib);
1590  break;
1591  case 145:
1592  coerceValue(value, myCreatetightnessattrib);
1593  break;
1594  case 146:
1595  coerceValue(value, myTightnessoutputattrib);
1596  break;
1597  case 147:
1598  coerceValue(value, myClumppointattribs);
1599  break;
1600  case 148:
1601  coerceValue(value, myClumpprimattribs);
1602  break;
1603 
1604  }
1605  }
1606 
1607  bool isParmColorRamp(exint idx) const override
1608  {
1609  switch (idx)
1610  {
1611 
1612  }
1613  return false;
1614  }
1615 
1616  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
1617  { doGetParmValue(idx, instance, value); }
1618  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
1619  { doGetParmValue(idx, instance, value); }
1620  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
1621  { doGetParmValue(idx, instance, value); }
1622  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
1623  { doGetParmValue(idx, instance, value); }
1624  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
1625  { doGetParmValue(idx, instance, value); }
1626  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
1627  { doGetParmValue(idx, instance, value); }
1628  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
1629  { doGetParmValue(idx, instance, value); }
1630  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
1631  { doGetParmValue(idx, instance, value); }
1632  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
1633  { doGetParmValue(idx, instance, value); }
1634  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
1635  { doGetParmValue(idx, instance, value); }
1636  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
1637  { doGetParmValue(idx, instance, value); }
1638 
1639  template <typename T>
1640  void
1641  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
1642  {
1643  if (idx.size() < 1)
1644  return;
1645  UT_ASSERT(idx.size() == instance.size()+1);
1646  if (idx.size() != instance.size()+1)
1647  return;
1648  switch (idx[0])
1649  {
1650  case 0:
1651  coerceValue(myLegacymasking, ( ( value ) ));
1652  break;
1653  case 1:
1654  coerceValue(myUvattrib, ( ( value ) ));
1655  break;
1656  case 2:
1657  coerceValue(myBlend, clampMinValue(0, clampMaxValue(1, value ) ));
1658  break;
1659  case 3:
1660  coerceValue(myBlendoverride, clampMinValue(0, clampMaxValue(4, value ) ));
1661  break;
1662  case 4:
1663  coerceValue(myBlendoptions, ( ( value ) ));
1664  break;
1665  case 5:
1666  coerceValue(myBlendinrange, ( ( value ) ));
1667  break;
1668  case 6:
1669  coerceValue(myBlendoutrange, ( ( value ) ));
1670  break;
1671  case 7:
1672  coerceValue(myBlendremapramp, clampMinValue(1, ( value ) ));
1673  break;
1674  case 8:
1675  coerceValue(myBlendcurveattrib, ( ( value ) ));
1676  break;
1677  case 9:
1678  coerceValue(myBlendattrib, ( ( value ) ));
1679  break;
1680  case 10:
1681  coerceValue(myBlendtexture, ( ( value ) ));
1682  break;
1683  case 11:
1684  coerceValue(myBlendtextureprim, ( ( value ) ));
1685  break;
1686  case 12:
1687  coerceValue(myUseskinmask, ( ( value ) ));
1688  break;
1689  case 13:
1690  coerceValue(mySkinmaskattrib, ( ( value ) ));
1691  break;
1692  case 14:
1693  coerceValue(myClumpsize, ( ( value ) ));
1694  break;
1695  case 15:
1696  coerceValue(myClumpsizeoverride, clampMinValue(0, clampMaxValue(3, value ) ));
1697  break;
1698  case 16:
1699  coerceValue(myClumpsizeoptions, ( ( value ) ));
1700  break;
1701  case 17:
1702  coerceValue(myClumpsizeinrange, ( ( value ) ));
1703  break;
1704  case 18:
1705  coerceValue(myClumpsizeoutrange, ( ( value ) ));
1706  break;
1707  case 19:
1708  coerceValue(myClumpsizeremapramp, clampMinValue(1, ( value ) ));
1709  break;
1710  case 20:
1711  coerceValue(myClumpsizeattrib, ( ( value ) ));
1712  break;
1713  case 21:
1714  coerceValue(myClumpsizetexture, ( ( value ) ));
1715  break;
1716  case 22:
1717  coerceValue(myClumpsizetextureprim, ( ( value ) ));
1718  break;
1719  case 23:
1720  coerceValue(mySearchbeyondradius, ( ( value ) ));
1721  break;
1722  case 24:
1723  coerceValue(myClumpwithinclumps, ( ( value ) ));
1724  break;
1725  case 25:
1726  coerceValue(myCrossoverrate, ( ( value ) ));
1727  break;
1728  case 26:
1729  coerceValue(mySeed, ( ( value ) ));
1730  break;
1731  case 27:
1732  coerceValue(myMethod, clampMinValue(0, clampMaxValue(1, value ) ));
1733  break;
1734  case 28:
1735  coerceValue(myPreservelength, ( ( value ) ));
1736  break;
1737  case 29:
1738  coerceValue(myExtendtomatch, ( ( value ) ));
1739  break;
1740  case 30:
1741  coerceValue(myShortentomatch, ( ( value ) ));
1742  break;
1743  case 31:
1744  coerceValue(myAccuratebundling, ( ( value ) ));
1745  break;
1746  case 32:
1747  coerceValue(myHairwidth, ( ( value ) ));
1748  break;
1749  case 33:
1750  coerceValue(myHairwidthscale, ( ( value ) ));
1751  break;
1752  case 34:
1753  coerceValue(myTightness, clampMinValue(0, clampMaxValue(1, value ) ));
1754  break;
1755  case 35:
1756  coerceValue(myTightnessoverride, clampMinValue(0, clampMaxValue(5, value ) ));
1757  break;
1758  case 36:
1759  coerceValue(myTightnessoptions, ( ( value ) ));
1760  break;
1761  case 37:
1762  coerceValue(myTightnessinrange, ( ( value ) ));
1763  break;
1764  case 38:
1765  coerceValue(myTightnessoutrange, ( ( value ) ));
1766  break;
1767  case 39:
1768  coerceValue(myTightnessremapramp, clampMinValue(1, ( value ) ));
1769  break;
1770  case 40:
1771  coerceValue(myTightnesscurveattrib, ( ( value ) ));
1772  break;
1773  case 41:
1774  coerceValue(myTightnessclumpattrib, ( ( value ) ));
1775  break;
1776  case 42:
1777  coerceValue(myTightnessattrib, ( ( value ) ));
1778  break;
1779  case 43:
1780  coerceValue(myTightnesstexture, ( ( value ) ));
1781  break;
1782  case 44:
1783  coerceValue(myTightnesstextureprim, ( ( value ) ));
1784  break;
1785  case 45:
1786  coerceValue(myStrayamount, clampMinValue(0, clampMaxValue(1, value ) ));
1787  break;
1788  case 46:
1789  coerceValue(myStrayamountoverride, clampMinValue(0, clampMaxValue(5, value ) ));
1790  break;
1791  case 47:
1792  coerceValue(myStrayamountoptions, ( ( value ) ));
1793  break;
1794  case 48:
1795  coerceValue(myStrayamountinrange, ( ( value ) ));
1796  break;
1797  case 49:
1798  coerceValue(myStrayamountoutrange, ( ( value ) ));
1799  break;
1800  case 50:
1801  coerceValue(myStrayamountremapramp, clampMinValue(1, ( value ) ));
1802  break;
1803  case 51:
1804  coerceValue(myStrayamountcurveattrib, ( ( value ) ));
1805  break;
1806  case 52:
1807  coerceValue(myStrayamountclumpattrib, ( ( value ) ));
1808  break;
1809  case 53:
1810  coerceValue(myStrayamountattrib, ( ( value ) ));
1811  break;
1812  case 54:
1813  coerceValue(myStrayamounttexture, ( ( value ) ));
1814  break;
1815  case 55:
1816  coerceValue(myStrayamounttextureprim, ( ( value ) ));
1817  break;
1818  case 56:
1819  coerceValue(myStrayrate, clampMinValue(0, clampMaxValue(1, value ) ));
1820  break;
1821  case 57:
1822  coerceValue(myStrayrateoverride, clampMinValue(0, clampMaxValue(5, value ) ));
1823  break;
1824  case 58:
1825  coerceValue(myStrayrateoptions, ( ( value ) ));
1826  break;
1827  case 59:
1828  coerceValue(myStrayrateinrange, ( ( value ) ));
1829  break;
1830  case 60:
1831  coerceValue(myStrayrateoutrange, ( ( value ) ));
1832  break;
1833  case 61:
1834  coerceValue(myStrayrateremapramp, clampMinValue(1, ( value ) ));
1835  break;
1836  case 62:
1837  coerceValue(myStrayratecurveattrib, ( ( value ) ));
1838  break;
1839  case 63:
1840  coerceValue(myStrayrateclumpattrib, ( ( value ) ));
1841  break;
1842  case 64:
1843  coerceValue(myStrayrateattrib, ( ( value ) ));
1844  break;
1845  case 65:
1846  coerceValue(myStrayratetexture, ( ( value ) ));
1847  break;
1848  case 66:
1849  coerceValue(myStrayratetextureprim, ( ( value ) ));
1850  break;
1851  case 67:
1852  coerceValue(myStrayfalloff, clampMinValue(0, ( value ) ));
1853  break;
1854  case 68:
1855  coerceValue(myStrayfalloffoverride, clampMinValue(0, clampMaxValue(5, value ) ));
1856  break;
1857  case 69:
1858  coerceValue(myStrayfalloffoptions, ( ( value ) ));
1859  break;
1860  case 70:
1861  coerceValue(myStrayfalloffinrange, ( ( value ) ));
1862  break;
1863  case 71:
1864  coerceValue(myStrayfalloffoutrange, ( ( value ) ));
1865  break;
1866  case 72:
1867  coerceValue(myStrayfalloffremapramp, clampMinValue(1, ( value ) ));
1868  break;
1869  case 73:
1870  coerceValue(myStrayfalloffcurveattrib, ( ( value ) ));
1871  break;
1872  case 74:
1873  coerceValue(myStrayfalloffclumpattrib, ( ( value ) ));
1874  break;
1875  case 75:
1876  coerceValue(myStrayfalloffattrib, ( ( value ) ));
1877  break;
1878  case 76:
1879  coerceValue(myStrayfallofftexture, ( ( value ) ));
1880  break;
1881  case 77:
1882  coerceValue(myStrayfallofftextureprim, ( ( value ) ));
1883  break;
1884  case 78:
1885  coerceValue(myClumpprofile, clampMinValue(1, ( value ) ));
1886  break;
1887  case 79:
1888  coerceValue(myIterations, clampMinValue(0, ( value ) ));
1889  break;
1890  case 80:
1891  coerceValue(myIterationsoverride, clampMinValue(0, clampMaxValue(4, value ) ));
1892  break;
1893  case 81:
1894  coerceValue(myIterationsoptions, ( ( value ) ));
1895  break;
1896  case 82:
1897  coerceValue(myIterationsinrange, ( ( value ) ));
1898  break;
1899  case 83:
1900  coerceValue(myIterationsoutrange, ( ( value ) ));
1901  break;
1902  case 84:
1903  coerceValue(myIterationsremapramp, clampMinValue(1, ( value ) ));
1904  break;
1905  case 85:
1906  coerceValue(myIterationscurveattrib, ( ( value ) ));
1907  break;
1908  case 86:
1909  coerceValue(myIterationsattrib, ( ( value ) ));
1910  break;
1911  case 87:
1912  coerceValue(myIterationstexture, ( ( value ) ));
1913  break;
1914  case 88:
1915  coerceValue(myIterationstextureprim, ( ( value ) ));
1916  break;
1917  case 89:
1918  coerceValue(mySizereduction, ( ( value ) ));
1919  break;
1920  case 90:
1921  coerceValue(mySizereductionoverride, clampMinValue(0, clampMaxValue(3, value ) ));
1922  break;
1923  case 91:
1924  coerceValue(mySizereductionoptions, ( ( value ) ));
1925  break;
1926  case 92:
1927  coerceValue(mySizereductioninrange, ( ( value ) ));
1928  break;
1929  case 93:
1930  coerceValue(mySizereductionoutrange, ( ( value ) ));
1931  break;
1932  case 94:
1933  coerceValue(mySizereductionremapramp, clampMinValue(1, ( value ) ));
1934  break;
1935  case 95:
1936  coerceValue(mySizereductionattrib, ( ( value ) ));
1937  break;
1938  case 96:
1939  coerceValue(mySizereductiontexture, ( ( value ) ));
1940  break;
1941  case 97:
1942  coerceValue(mySizereductiontextureprim, ( ( value ) ));
1943  break;
1944  case 98:
1945  coerceValue(myGoalfeedback, clampMinValue(0, clampMaxValue(1, value ) ));
1946  break;
1947  case 99:
1948  coerceValue(myGoalfeedbackoverride, clampMinValue(0, clampMaxValue(3, value ) ));
1949  break;
1950  case 100:
1951  coerceValue(myGoalfeedbackoptions, ( ( value ) ));
1952  break;
1953  case 101:
1954  coerceValue(myGoalfeedbackinrange, ( ( value ) ));
1955  break;
1956  case 102:
1957  coerceValue(myGoalfeedbackoutrange, ( ( value ) ));
1958  break;
1959  case 103:
1960  coerceValue(myGoalfeedbackremapramp, clampMinValue(1, ( value ) ));
1961  break;
1962  case 104:
1963  coerceValue(myGoalfeedbackattrib, ( ( value ) ));
1964  break;
1965  case 105:
1966  coerceValue(myGoalfeedbacktexture, ( ( value ) ));
1967  break;
1968  case 106:
1969  coerceValue(myGoalfeedbacktextureprim, ( ( value ) ));
1970  break;
1971  case 107:
1972  coerceValue(myTightnessreduction, clampMinValue(0, ( value ) ));
1973  break;
1974  case 108:
1975  coerceValue(myTightnessreductionoverride, clampMinValue(0, clampMaxValue(4, value ) ));
1976  break;
1977  case 109:
1978  coerceValue(myTightnessreductionoptions, ( ( value ) ));
1979  break;
1980  case 110:
1981  coerceValue(myTightnessreductioninrange, ( ( value ) ));
1982  break;
1983  case 111:
1984  coerceValue(myTightnessreductionoutrange, ( ( value ) ));
1985  break;
1986  case 112:
1987  coerceValue(myTightnessreductionremapramp, clampMinValue(1, ( value ) ));
1988  break;
1989  case 113:
1990  coerceValue(myTightnessreductioncurveattrib, ( ( value ) ));
1991  break;
1992  case 114:
1993  coerceValue(myTightnessreductionattrib, ( ( value ) ));
1994  break;
1995  case 115:
1996  coerceValue(myTightnessreductiontexture, ( ( value ) ));
1997  break;
1998  case 116:
1999  coerceValue(myTightnessreductiontextureprim, ( ( value ) ));
2000  break;
2001  case 117:
2002  coerceValue(myEnablecurling, ( ( value ) ));
2003  break;
2004  case 118:
2005  coerceValue(myCurlamp, ( ( value ) ));
2006  break;
2007  case 119:
2008  coerceValue(myCurlampoverride, clampMinValue(0, clampMaxValue(4, value ) ));
2009  break;
2010  case 120:
2011  coerceValue(myCurlampoptions, ( ( value ) ));
2012  break;
2013  case 121:
2014  coerceValue(myCurlampinrange, ( ( value ) ));
2015  break;
2016  case 122:
2017  coerceValue(myCurlampoutrange, ( ( value ) ));
2018  break;
2019  case 123:
2020  coerceValue(myCurlampremapramp, clampMinValue(1, ( value ) ));
2021  break;
2022  case 124:
2023  coerceValue(myCurlampcurveattrib, ( ( value ) ));
2024  break;
2025  case 125:
2026  coerceValue(myCurlampattrib, ( ( value ) ));
2027  break;
2028  case 126:
2029  coerceValue(myCurlamptexture, ( ( value ) ));
2030  break;
2031  case 127:
2032  coerceValue(myCurlamptextureprim, ( ( value ) ));
2033  break;
2034  case 128:
2035  coerceValue(myCurlampramp, clampMinValue(1, ( value ) ));
2036  break;
2037  case 129:
2038  coerceValue(myCurlfreq, ( ( value ) ));
2039  break;
2040  case 130:
2041  coerceValue(myCurlfreqoverride, clampMinValue(0, clampMaxValue(4, value ) ));
2042  break;
2043  case 131:
2044  coerceValue(myCurlfreqoptions, ( ( value ) ));
2045  break;
2046  case 132:
2047  coerceValue(myCurlfreqinrange, ( ( value ) ));
2048  break;
2049  case 133:
2050  coerceValue(myCurlfreqoutrange, ( ( value ) ));
2051  break;
2052  case 134:
2053  coerceValue(myCurlfreqremapramp, clampMinValue(1, ( value ) ));
2054  break;
2055  case 135:
2056  coerceValue(myCurlfreqcurveattrib, ( ( value ) ));
2057  break;
2058  case 136:
2059  coerceValue(myCurlfreqattrib, ( ( value ) ));
2060  break;
2061  case 137:
2062  coerceValue(myCurlfreqtexture, ( ( value ) ));
2063  break;
2064  case 138:
2065  coerceValue(myCurlfreqtextureprim, ( ( value ) ));
2066  break;
2067  case 139:
2068  coerceValue(myCurlfreqramp, clampMinValue(1, ( value ) ));
2069  break;
2070  case 140:
2071  coerceValue(myClumpidinputattrib, ( ( value ) ));
2072  break;
2073  case 141:
2074  coerceValue(myCreateclumpidattrib, ( ( value ) ));
2075  break;
2076  case 142:
2077  coerceValue(myClumpidoutputattrib, ( ( value ) ));
2078  break;
2079  case 143:
2080  coerceValue(myUseorientinputattrib, ( ( value ) ));
2081  break;
2082  case 144:
2083  coerceValue(myOrientinputattrib, ( ( value ) ));
2084  break;
2085  case 145:
2086  coerceValue(myCreatetightnessattrib, ( ( value ) ));
2087  break;
2088  case 146:
2089  coerceValue(myTightnessoutputattrib, ( ( value ) ));
2090  break;
2091  case 147:
2092  coerceValue(myClumppointattribs, ( ( value ) ));
2093  break;
2094  case 148:
2095  coerceValue(myClumpprimattribs, ( ( value ) ));
2096  break;
2097 
2098  }
2099  }
2100 
2101  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
2102  { doSetParmValue(idx, instance, value); }
2103  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
2104  { doSetParmValue(idx, instance, value); }
2105  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
2106  { doSetParmValue(idx, instance, value); }
2107  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
2108  { doSetParmValue(idx, instance, value); }
2109  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
2110  { doSetParmValue(idx, instance, value); }
2111  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
2112  { doSetParmValue(idx, instance, value); }
2113  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
2114  { doSetParmValue(idx, instance, value); }
2115  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
2116  { doSetParmValue(idx, instance, value); }
2117  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
2118  { doSetParmValue(idx, instance, value); }
2119  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
2120  { doSetParmValue(idx, instance, value); }
2121  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
2122  { doSetParmValue(idx, instance, value); }
2123 
2124  exint getNestNumParms(TempIndex idx) const override
2125  {
2126  if (idx.size() == 0)
2127  return 149;
2128  switch (idx[0])
2129  {
2130 
2131  }
2132  // Invalid
2133  return 0;
2134  }
2135 
2136  const char *getNestParmName(TempIndex fieldnum) const override
2137  {
2138  if (fieldnum.size() < 1)
2139  return 0;
2140  switch (fieldnum[0])
2141  {
2142  case 0:
2143  return "legacymasking";
2144  case 1:
2145  return "uvattrib";
2146  case 2:
2147  return "blend";
2148  case 3:
2149  return "blendoverride";
2150  case 4:
2151  return "blendoptions";
2152  case 5:
2153  return "blendinrange";
2154  case 6:
2155  return "blendoutrange";
2156  case 7:
2157  return "blendremapramp";
2158  case 8:
2159  return "blendcurveattrib";
2160  case 9:
2161  return "blendattrib";
2162  case 10:
2163  return "blendtexture";
2164  case 11:
2165  return "blendtextureprim";
2166  case 12:
2167  return "useskinmask";
2168  case 13:
2169  return "skinmaskattrib";
2170  case 14:
2171  return "clumpsize";
2172  case 15:
2173  return "clumpsizeoverride";
2174  case 16:
2175  return "clumpsizeoptions";
2176  case 17:
2177  return "clumpsizeinrange";
2178  case 18:
2179  return "clumpsizeoutrange";
2180  case 19:
2181  return "clumpsizeremapramp";
2182  case 20:
2183  return "clumpsizeattrib";
2184  case 21:
2185  return "clumpsizetexture";
2186  case 22:
2187  return "clumpsizetextureprim";
2188  case 23:
2189  return "searchbeyondradius";
2190  case 24:
2191  return "clumpwithinclumps";
2192  case 25:
2193  return "crossoverrate";
2194  case 26:
2195  return "seed";
2196  case 27:
2197  return "method";
2198  case 28:
2199  return "preservelength";
2200  case 29:
2201  return "extendtomatch";
2202  case 30:
2203  return "shortentomatch";
2204  case 31:
2205  return "accuratebundling";
2206  case 32:
2207  return "hairwidth";
2208  case 33:
2209  return "hairwidthscale";
2210  case 34:
2211  return "tightness";
2212  case 35:
2213  return "tightnessoverride";
2214  case 36:
2215  return "tightnessoptions";
2216  case 37:
2217  return "tightnessinrange";
2218  case 38:
2219  return "tightnessoutrange";
2220  case 39:
2221  return "tightnessremapramp";
2222  case 40:
2223  return "tightnesscurveattrib";
2224  case 41:
2225  return "tightnessclumpattrib";
2226  case 42:
2227  return "tightnessattrib";
2228  case 43:
2229  return "tightnesstexture";
2230  case 44:
2231  return "tightnesstextureprim";
2232  case 45:
2233  return "strayamount";
2234  case 46:
2235  return "strayamountoverride";
2236  case 47:
2237  return "strayamountoptions";
2238  case 48:
2239  return "strayamountinrange";
2240  case 49:
2241  return "strayamountoutrange";
2242  case 50:
2243  return "strayamountremapramp";
2244  case 51:
2245  return "strayamountcurveattrib";
2246  case 52:
2247  return "strayamountclumpattrib";
2248  case 53:
2249  return "strayamountattrib";
2250  case 54:
2251  return "strayamounttexture";
2252  case 55:
2253  return "strayamounttextureprim";
2254  case 56:
2255  return "strayrate";
2256  case 57:
2257  return "strayrateoverride";
2258  case 58:
2259  return "strayrateoptions";
2260  case 59:
2261  return "strayrateinrange";
2262  case 60:
2263  return "strayrateoutrange";
2264  case 61:
2265  return "strayrateremapramp";
2266  case 62:
2267  return "strayratecurveattrib";
2268  case 63:
2269  return "strayrateclumpattrib";
2270  case 64:
2271  return "strayrateattrib";
2272  case 65:
2273  return "strayratetexture";
2274  case 66:
2275  return "strayratetextureprim";
2276  case 67:
2277  return "strayfalloff";
2278  case 68:
2279  return "strayfalloffoverride";
2280  case 69:
2281  return "strayfalloffoptions";
2282  case 70:
2283  return "strayfalloffinrange";
2284  case 71:
2285  return "strayfalloffoutrange";
2286  case 72:
2287  return "strayfalloffremapramp";
2288  case 73:
2289  return "strayfalloffcurveattrib";
2290  case 74:
2291  return "strayfalloffclumpattrib";
2292  case 75:
2293  return "strayfalloffattrib";
2294  case 76:
2295  return "strayfallofftexture";
2296  case 77:
2297  return "strayfallofftextureprim";
2298  case 78:
2299  return "clumpprofile";
2300  case 79:
2301  return "iterations";
2302  case 80:
2303  return "iterationsoverride";
2304  case 81:
2305  return "iterationsoptions";
2306  case 82:
2307  return "iterationsinrange";
2308  case 83:
2309  return "iterationsoutrange";
2310  case 84:
2311  return "iterationsremapramp";
2312  case 85:
2313  return "iterationscurveattrib";
2314  case 86:
2315  return "iterationsattrib";
2316  case 87:
2317  return "iterationstexture";
2318  case 88:
2319  return "iterationstextureprim";
2320  case 89:
2321  return "sizereduction";
2322  case 90:
2323  return "sizereductionoverride";
2324  case 91:
2325  return "sizereductionoptions";
2326  case 92:
2327  return "sizereductioninrange";
2328  case 93:
2329  return "sizereductionoutrange";
2330  case 94:
2331  return "sizereductionremapramp";
2332  case 95:
2333  return "sizereductionattrib";
2334  case 96:
2335  return "sizereductiontexture";
2336  case 97:
2337  return "sizereductiontextureprim";
2338  case 98:
2339  return "goalfeedback";
2340  case 99:
2341  return "goalfeedbackoverride";
2342  case 100:
2343  return "goalfeedbackoptions";
2344  case 101:
2345  return "goalfeedbackinrange";
2346  case 102:
2347  return "goalfeedbackoutrange";
2348  case 103:
2349  return "goalfeedbackremapramp";
2350  case 104:
2351  return "goalfeedbackattrib";
2352  case 105:
2353  return "goalfeedbacktexture";
2354  case 106:
2355  return "goalfeedbacktextureprim";
2356  case 107:
2357  return "tightnessreduction";
2358  case 108:
2359  return "tightnessreductionoverride";
2360  case 109:
2361  return "tightnessreductionoptions";
2362  case 110:
2363  return "tightnessreductioninrange";
2364  case 111:
2365  return "tightnessreductionoutrange";
2366  case 112:
2367  return "tightnessreductionremapramp";
2368  case 113:
2369  return "tightnessreductioncurveattrib";
2370  case 114:
2371  return "tightnessreductionattrib";
2372  case 115:
2373  return "tightnessreductiontexture";
2374  case 116:
2375  return "tightnessreductiontextureprim";
2376  case 117:
2377  return "enablecurling";
2378  case 118:
2379  return "curlamp";
2380  case 119:
2381  return "curlampoverride";
2382  case 120:
2383  return "curlampoptions";
2384  case 121:
2385  return "curlampinrange";
2386  case 122:
2387  return "curlampoutrange";
2388  case 123:
2389  return "curlampremapramp";
2390  case 124:
2391  return "curlampcurveattrib";
2392  case 125:
2393  return "curlampattrib";
2394  case 126:
2395  return "curlamptexture";
2396  case 127:
2397  return "curlamptextureprim";
2398  case 128:
2399  return "curlampramp";
2400  case 129:
2401  return "curlfreq";
2402  case 130:
2403  return "curlfreqoverride";
2404  case 131:
2405  return "curlfreqoptions";
2406  case 132:
2407  return "curlfreqinrange";
2408  case 133:
2409  return "curlfreqoutrange";
2410  case 134:
2411  return "curlfreqremapramp";
2412  case 135:
2413  return "curlfreqcurveattrib";
2414  case 136:
2415  return "curlfreqattrib";
2416  case 137:
2417  return "curlfreqtexture";
2418  case 138:
2419  return "curlfreqtextureprim";
2420  case 139:
2421  return "curlfreqramp";
2422  case 140:
2423  return "clumpidinputattrib";
2424  case 141:
2425  return "createclumpidattrib";
2426  case 142:
2427  return "clumpidoutputattrib";
2428  case 143:
2429  return "useorientinputattrib";
2430  case 144:
2431  return "orientinputattrib";
2432  case 145:
2433  return "createtightnessattrib";
2434  case 146:
2435  return "tightnessoutputattrib";
2436  case 147:
2437  return "clumppointattribs";
2438  case 148:
2439  return "clumpprimattribs";
2440 
2441  }
2442  return 0;
2443  }
2444 
2445  ParmType getNestParmType(TempIndex fieldnum) const override
2446  {
2447  if (fieldnum.size() < 1)
2448  return PARM_UNSUPPORTED;
2449  switch (fieldnum[0])
2450  {
2451  case 0:
2452  return PARM_INTEGER;
2453  case 1:
2454  return PARM_STRING;
2455  case 2:
2456  return PARM_FLOAT;
2457  case 3:
2458  return PARM_INTEGER;
2459  case 4:
2460  return PARM_INTEGER;
2461  case 5:
2462  return PARM_VECTOR2;
2463  case 6:
2464  return PARM_VECTOR2;
2465  case 7:
2466  return PARM_RAMP;
2467  case 8:
2468  return PARM_STRING;
2469  case 9:
2470  return PARM_STRING;
2471  case 10:
2472  return PARM_STRING;
2473  case 11:
2474  return PARM_STRING;
2475  case 12:
2476  return PARM_INTEGER;
2477  case 13:
2478  return PARM_STRING;
2479  case 14:
2480  return PARM_FLOAT;
2481  case 15:
2482  return PARM_INTEGER;
2483  case 16:
2484  return PARM_INTEGER;
2485  case 17:
2486  return PARM_VECTOR2;
2487  case 18:
2488  return PARM_VECTOR2;
2489  case 19:
2490  return PARM_RAMP;
2491  case 20:
2492  return PARM_STRING;
2493  case 21:
2494  return PARM_STRING;
2495  case 22:
2496  return PARM_STRING;
2497  case 23:
2498  return PARM_INTEGER;
2499  case 24:
2500  return PARM_INTEGER;
2501  case 25:
2502  return PARM_FLOAT;
2503  case 26:
2504  return PARM_FLOAT;
2505  case 27:
2506  return PARM_INTEGER;
2507  case 28:
2508  return PARM_INTEGER;
2509  case 29:
2510  return PARM_FLOAT;
2511  case 30:
2512  return PARM_FLOAT;
2513  case 31:
2514  return PARM_INTEGER;
2515  case 32:
2516  return PARM_FLOAT;
2517  case 33:
2518  return PARM_FLOAT;
2519  case 34:
2520  return PARM_FLOAT;
2521  case 35:
2522  return PARM_INTEGER;
2523  case 36:
2524  return PARM_INTEGER;
2525  case 37:
2526  return PARM_VECTOR2;
2527  case 38:
2528  return PARM_VECTOR2;
2529  case 39:
2530  return PARM_RAMP;
2531  case 40:
2532  return PARM_STRING;
2533  case 41:
2534  return PARM_STRING;
2535  case 42:
2536  return PARM_STRING;
2537  case 43:
2538  return PARM_STRING;
2539  case 44:
2540  return PARM_STRING;
2541  case 45:
2542  return PARM_FLOAT;
2543  case 46:
2544  return PARM_INTEGER;
2545  case 47:
2546  return PARM_INTEGER;
2547  case 48:
2548  return PARM_VECTOR2;
2549  case 49:
2550  return PARM_VECTOR2;
2551  case 50:
2552  return PARM_RAMP;
2553  case 51:
2554  return PARM_STRING;
2555  case 52:
2556  return PARM_STRING;
2557  case 53:
2558  return PARM_STRING;
2559  case 54:
2560  return PARM_STRING;
2561  case 55:
2562  return PARM_STRING;
2563  case 56:
2564  return PARM_FLOAT;
2565  case 57:
2566  return PARM_INTEGER;
2567  case 58:
2568  return PARM_INTEGER;
2569  case 59:
2570  return PARM_VECTOR2;
2571  case 60:
2572  return PARM_VECTOR2;
2573  case 61:
2574  return PARM_RAMP;
2575  case 62:
2576  return PARM_STRING;
2577  case 63:
2578  return PARM_STRING;
2579  case 64:
2580  return PARM_STRING;
2581  case 65:
2582  return PARM_STRING;
2583  case 66:
2584  return PARM_STRING;
2585  case 67:
2586  return PARM_FLOAT;
2587  case 68:
2588  return PARM_INTEGER;
2589  case 69:
2590  return PARM_INTEGER;
2591  case 70:
2592  return PARM_VECTOR2;
2593  case 71:
2594  return PARM_VECTOR2;
2595  case 72:
2596  return PARM_RAMP;
2597  case 73:
2598  return PARM_STRING;
2599  case 74:
2600  return PARM_STRING;
2601  case 75:
2602  return PARM_STRING;
2603  case 76:
2604  return PARM_STRING;
2605  case 77:
2606  return PARM_STRING;
2607  case 78:
2608  return PARM_RAMP;
2609  case 79:
2610  return PARM_FLOAT;
2611  case 80:
2612  return PARM_INTEGER;
2613  case 81:
2614  return PARM_INTEGER;
2615  case 82:
2616  return PARM_VECTOR2;
2617  case 83:
2618  return PARM_VECTOR2;
2619  case 84:
2620  return PARM_RAMP;
2621  case 85:
2622  return PARM_STRING;
2623  case 86:
2624  return PARM_STRING;
2625  case 87:
2626  return PARM_STRING;
2627  case 88:
2628  return PARM_STRING;
2629  case 89:
2630  return PARM_FLOAT;
2631  case 90:
2632  return PARM_INTEGER;
2633  case 91:
2634  return PARM_INTEGER;
2635  case 92:
2636  return PARM_VECTOR2;
2637  case 93:
2638  return PARM_VECTOR2;
2639  case 94:
2640  return PARM_RAMP;
2641  case 95:
2642  return PARM_STRING;
2643  case 96:
2644  return PARM_STRING;
2645  case 97:
2646  return PARM_STRING;
2647  case 98:
2648  return PARM_FLOAT;
2649  case 99:
2650  return PARM_INTEGER;
2651  case 100:
2652  return PARM_INTEGER;
2653  case 101:
2654  return PARM_VECTOR2;
2655  case 102:
2656  return PARM_VECTOR2;
2657  case 103:
2658  return PARM_RAMP;
2659  case 104:
2660  return PARM_STRING;
2661  case 105:
2662  return PARM_STRING;
2663  case 106:
2664  return PARM_STRING;
2665  case 107:
2666  return PARM_FLOAT;
2667  case 108:
2668  return PARM_INTEGER;
2669  case 109:
2670  return PARM_INTEGER;
2671  case 110:
2672  return PARM_VECTOR2;
2673  case 111:
2674  return PARM_VECTOR2;
2675  case 112:
2676  return PARM_RAMP;
2677  case 113:
2678  return PARM_STRING;
2679  case 114:
2680  return PARM_STRING;
2681  case 115:
2682  return PARM_STRING;
2683  case 116:
2684  return PARM_STRING;
2685  case 117:
2686  return PARM_INTEGER;
2687  case 118:
2688  return PARM_FLOAT;
2689  case 119:
2690  return PARM_INTEGER;
2691  case 120:
2692  return PARM_INTEGER;
2693  case 121:
2694  return PARM_VECTOR2;
2695  case 122:
2696  return PARM_VECTOR2;
2697  case 123:
2698  return PARM_RAMP;
2699  case 124:
2700  return PARM_STRING;
2701  case 125:
2702  return PARM_STRING;
2703  case 126:
2704  return PARM_STRING;
2705  case 127:
2706  return PARM_STRING;
2707  case 128:
2708  return PARM_RAMP;
2709  case 129:
2710  return PARM_FLOAT;
2711  case 130:
2712  return PARM_INTEGER;
2713  case 131:
2714  return PARM_INTEGER;
2715  case 132:
2716  return PARM_VECTOR2;
2717  case 133:
2718  return PARM_VECTOR2;
2719  case 134:
2720  return PARM_RAMP;
2721  case 135:
2722  return PARM_STRING;
2723  case 136:
2724  return PARM_STRING;
2725  case 137:
2726  return PARM_STRING;
2727  case 138:
2728  return PARM_STRING;
2729  case 139:
2730  return PARM_RAMP;
2731  case 140:
2732  return PARM_STRING;
2733  case 141:
2734  return PARM_INTEGER;
2735  case 142:
2736  return PARM_STRING;
2737  case 143:
2738  return PARM_INTEGER;
2739  case 144:
2740  return PARM_STRING;
2741  case 145:
2742  return PARM_INTEGER;
2743  case 146:
2744  return PARM_STRING;
2745  case 147:
2746  return PARM_STRING;
2747  case 148:
2748  return PARM_STRING;
2749 
2750  }
2751  return PARM_UNSUPPORTED;
2752  }
2753 
2754  // Boiler plate to load individual types.
2755  static void loadData(UT_IStream &is, int64 &v)
2756  { is.bread(&v, 1); }
2757  static void loadData(UT_IStream &is, bool &v)
2758  { int64 iv; is.bread(&iv, 1); v = iv; }
2759  static void loadData(UT_IStream &is, fpreal64 &v)
2760  { is.bread<fpreal64>(&v, 1); }
2761  static void loadData(UT_IStream &is, UT_Vector2D &v)
2762  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
2763  static void loadData(UT_IStream &is, UT_Vector3D &v)
2764  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
2765  is.bread<fpreal64>(&v.z(), 1); }
2766  static void loadData(UT_IStream &is, UT_Vector4D &v)
2767  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
2768  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
2769  static void loadData(UT_IStream &is, UT_Matrix2D &v)
2770  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
2771  static void loadData(UT_IStream &is, UT_Matrix3D &v)
2772  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
2773  static void loadData(UT_IStream &is, UT_Matrix4D &v)
2774  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
2775  static void loadData(UT_IStream &is, UT_Vector2I &v)
2776  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
2777  static void loadData(UT_IStream &is, UT_Vector3I &v)
2778  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
2779  is.bread<int64>(&v.z(), 1); }
2780  static void loadData(UT_IStream &is, UT_Vector4I &v)
2781  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
2782  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
2784  { is.bread(v); }
2786  { UT_StringHolder rampdata;
2787  loadData(is, rampdata);
2788  if (rampdata.isstring())
2789  {
2790  v.reset(new UT_Ramp());
2791  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
2792  v->load(istr);
2793  }
2794  else v.reset();
2795  }
2798  loadData(is, data);
2799  if (data.isstring())
2800  {
2801  // Find the data type.
2802  const char *colon = UT_StringWrap(data).findChar(':');
2803  if (colon)
2804  {
2805  int typelen = colon - data.buffer();
2807  type.strncpy(data.buffer(), typelen);
2808  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
2809 
2810  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
2811  }
2812  }
2813  else v.reset();
2814  }
2815 
2816  static void saveData(std::ostream &os, int64 v)
2817  { UTwrite(os, &v); }
2818  static void saveData(std::ostream &os, bool v)
2819  { int64 iv = v; UTwrite(os, &iv); }
2820  static void saveData(std::ostream &os, fpreal64 v)
2821  { UTwrite<fpreal64>(os, &v); }
2822  static void saveData(std::ostream &os, UT_Vector2D v)
2823  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
2824  static void saveData(std::ostream &os, UT_Vector3D v)
2825  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
2826  UTwrite<fpreal64>(os, &v.z()); }
2827  static void saveData(std::ostream &os, UT_Vector4D v)
2828  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
2829  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
2830  static void saveData(std::ostream &os, UT_Matrix2D v)
2832  static void saveData(std::ostream &os, UT_Matrix3D v)
2834  static void saveData(std::ostream &os, UT_Matrix4D v)
2836  static void saveData(std::ostream &os, UT_StringHolder s)
2837  { UT_StringWrap(s).saveBinary(os); }
2838  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
2840  UT_OStringStream ostr;
2841  if (s) s->save(ostr);
2842  result = ostr.str();
2843  saveData(os, result);
2844  }
2845  static void saveData(std::ostream &os, PRM_DataItemHandle s)
2847  UT_OStringStream ostr;
2848  if (s)
2849  {
2850  ostr << s->getDataTypeToken();
2851  ostr << ":";
2852  s->saveBinary(ostr);
2853  }
2854  result = ostr.str();
2855  saveData(os, result);
2856  }
2857 
2858 
2859  void save(std::ostream &os) const
2860  {
2861  int32 v = version();
2862  UTwrite(os, &v);
2863  saveData(os, myLegacymasking);
2864  saveData(os, myUvattrib);
2865  saveData(os, myBlend);
2866  saveData(os, myBlendoverride);
2867  saveData(os, myBlendoptions);
2868  saveData(os, myBlendinrange);
2869  saveData(os, myBlendoutrange);
2870  saveData(os, myBlendremapramp);
2871  saveData(os, myBlendcurveattrib);
2872  saveData(os, myBlendattrib);
2873  saveData(os, myBlendtexture);
2874  saveData(os, myBlendtextureprim);
2875  saveData(os, myUseskinmask);
2876  saveData(os, mySkinmaskattrib);
2877  saveData(os, myClumpsize);
2878  saveData(os, myClumpsizeoverride);
2879  saveData(os, myClumpsizeoptions);
2880  saveData(os, myClumpsizeinrange);
2881  saveData(os, myClumpsizeoutrange);
2882  saveData(os, myClumpsizeremapramp);
2883  saveData(os, myClumpsizeattrib);
2884  saveData(os, myClumpsizetexture);
2885  saveData(os, myClumpsizetextureprim);
2886  saveData(os, mySearchbeyondradius);
2887  saveData(os, myClumpwithinclumps);
2888  saveData(os, myCrossoverrate);
2889  saveData(os, mySeed);
2890  saveData(os, myMethod);
2891  saveData(os, myPreservelength);
2892  saveData(os, myExtendtomatch);
2893  saveData(os, myShortentomatch);
2894  saveData(os, myAccuratebundling);
2895  saveData(os, myHairwidth);
2896  saveData(os, myHairwidthscale);
2897  saveData(os, myTightness);
2898  saveData(os, myTightnessoverride);
2899  saveData(os, myTightnessoptions);
2900  saveData(os, myTightnessinrange);
2901  saveData(os, myTightnessoutrange);
2902  saveData(os, myTightnessremapramp);
2903  saveData(os, myTightnesscurveattrib);
2904  saveData(os, myTightnessclumpattrib);
2905  saveData(os, myTightnessattrib);
2906  saveData(os, myTightnesstexture);
2907  saveData(os, myTightnesstextureprim);
2908  saveData(os, myStrayamount);
2909  saveData(os, myStrayamountoverride);
2910  saveData(os, myStrayamountoptions);
2911  saveData(os, myStrayamountinrange);
2912  saveData(os, myStrayamountoutrange);
2913  saveData(os, myStrayamountremapramp);
2914  saveData(os, myStrayamountcurveattrib);
2915  saveData(os, myStrayamountclumpattrib);
2916  saveData(os, myStrayamountattrib);
2917  saveData(os, myStrayamounttexture);
2918  saveData(os, myStrayamounttextureprim);
2919  saveData(os, myStrayrate);
2920  saveData(os, myStrayrateoverride);
2921  saveData(os, myStrayrateoptions);
2922  saveData(os, myStrayrateinrange);
2923  saveData(os, myStrayrateoutrange);
2924  saveData(os, myStrayrateremapramp);
2925  saveData(os, myStrayratecurveattrib);
2926  saveData(os, myStrayrateclumpattrib);
2927  saveData(os, myStrayrateattrib);
2928  saveData(os, myStrayratetexture);
2929  saveData(os, myStrayratetextureprim);
2930  saveData(os, myStrayfalloff);
2931  saveData(os, myStrayfalloffoverride);
2932  saveData(os, myStrayfalloffoptions);
2933  saveData(os, myStrayfalloffinrange);
2934  saveData(os, myStrayfalloffoutrange);
2935  saveData(os, myStrayfalloffremapramp);
2936  saveData(os, myStrayfalloffcurveattrib);
2937  saveData(os, myStrayfalloffclumpattrib);
2938  saveData(os, myStrayfalloffattrib);
2939  saveData(os, myStrayfallofftexture);
2940  saveData(os, myStrayfallofftextureprim);
2941  saveData(os, myClumpprofile);
2942  saveData(os, myIterations);
2943  saveData(os, myIterationsoverride);
2944  saveData(os, myIterationsoptions);
2945  saveData(os, myIterationsinrange);
2946  saveData(os, myIterationsoutrange);
2947  saveData(os, myIterationsremapramp);
2948  saveData(os, myIterationscurveattrib);
2949  saveData(os, myIterationsattrib);
2950  saveData(os, myIterationstexture);
2951  saveData(os, myIterationstextureprim);
2952  saveData(os, mySizereduction);
2953  saveData(os, mySizereductionoverride);
2954  saveData(os, mySizereductionoptions);
2955  saveData(os, mySizereductioninrange);
2956  saveData(os, mySizereductionoutrange);
2957  saveData(os, mySizereductionremapramp);
2958  saveData(os, mySizereductionattrib);
2959  saveData(os, mySizereductiontexture);
2960  saveData(os, mySizereductiontextureprim);
2961  saveData(os, myGoalfeedback);
2962  saveData(os, myGoalfeedbackoverride);
2963  saveData(os, myGoalfeedbackoptions);
2964  saveData(os, myGoalfeedbackinrange);
2965  saveData(os, myGoalfeedbackoutrange);
2966  saveData(os, myGoalfeedbackremapramp);
2967  saveData(os, myGoalfeedbackattrib);
2968  saveData(os, myGoalfeedbacktexture);
2969  saveData(os, myGoalfeedbacktextureprim);
2970  saveData(os, myTightnessreduction);
2971  saveData(os, myTightnessreductionoverride);
2972  saveData(os, myTightnessreductionoptions);
2973  saveData(os, myTightnessreductioninrange);
2974  saveData(os, myTightnessreductionoutrange);
2975  saveData(os, myTightnessreductionremapramp);
2976  saveData(os, myTightnessreductioncurveattrib);
2977  saveData(os, myTightnessreductionattrib);
2978  saveData(os, myTightnessreductiontexture);
2979  saveData(os, myTightnessreductiontextureprim);
2980  saveData(os, myEnablecurling);
2981  saveData(os, myCurlamp);
2982  saveData(os, myCurlampoverride);
2983  saveData(os, myCurlampoptions);
2984  saveData(os, myCurlampinrange);
2985  saveData(os, myCurlampoutrange);
2986  saveData(os, myCurlampremapramp);
2987  saveData(os, myCurlampcurveattrib);
2988  saveData(os, myCurlampattrib);
2989  saveData(os, myCurlamptexture);
2990  saveData(os, myCurlamptextureprim);
2991  saveData(os, myCurlampramp);
2992  saveData(os, myCurlfreq);
2993  saveData(os, myCurlfreqoverride);
2994  saveData(os, myCurlfreqoptions);
2995  saveData(os, myCurlfreqinrange);
2996  saveData(os, myCurlfreqoutrange);
2997  saveData(os, myCurlfreqremapramp);
2998  saveData(os, myCurlfreqcurveattrib);
2999  saveData(os, myCurlfreqattrib);
3000  saveData(os, myCurlfreqtexture);
3001  saveData(os, myCurlfreqtextureprim);
3002  saveData(os, myCurlfreqramp);
3003  saveData(os, myClumpidinputattrib);
3004  saveData(os, myCreateclumpidattrib);
3005  saveData(os, myClumpidoutputattrib);
3006  saveData(os, myUseorientinputattrib);
3007  saveData(os, myOrientinputattrib);
3008  saveData(os, myCreatetightnessattrib);
3009  saveData(os, myTightnessoutputattrib);
3010  saveData(os, myClumppointattribs);
3011  saveData(os, myClumpprimattribs);
3012 
3013  }
3014 
3015  bool load(UT_IStream &is)
3016  {
3017  int32 v;
3018  is.bread(&v, 1);
3019  if (version() != v)
3020  {
3021  // Fail incompatible versions
3022  return false;
3023  }
3024  loadData(is, myLegacymasking);
3025  loadData(is, myUvattrib);
3026  loadData(is, myBlend);
3027  loadData(is, myBlendoverride);
3028  loadData(is, myBlendoptions);
3029  loadData(is, myBlendinrange);
3030  loadData(is, myBlendoutrange);
3031  loadData(is, myBlendremapramp);
3032  loadData(is, myBlendcurveattrib);
3033  loadData(is, myBlendattrib);
3034  loadData(is, myBlendtexture);
3035  loadData(is, myBlendtextureprim);
3036  loadData(is, myUseskinmask);
3037  loadData(is, mySkinmaskattrib);
3038  loadData(is, myClumpsize);
3039  loadData(is, myClumpsizeoverride);
3040  loadData(is, myClumpsizeoptions);
3041  loadData(is, myClumpsizeinrange);
3042  loadData(is, myClumpsizeoutrange);
3043  loadData(is, myClumpsizeremapramp);
3044  loadData(is, myClumpsizeattrib);
3045  loadData(is, myClumpsizetexture);
3046  loadData(is, myClumpsizetextureprim);
3047  loadData(is, mySearchbeyondradius);
3048  loadData(is, myClumpwithinclumps);
3049  loadData(is, myCrossoverrate);
3050  loadData(is, mySeed);
3051  loadData(is, myMethod);
3052  loadData(is, myPreservelength);
3053  loadData(is, myExtendtomatch);
3054  loadData(is, myShortentomatch);
3055  loadData(is, myAccuratebundling);
3056  loadData(is, myHairwidth);
3057  loadData(is, myHairwidthscale);
3058  loadData(is, myTightness);
3059  loadData(is, myTightnessoverride);
3060  loadData(is, myTightnessoptions);
3061  loadData(is, myTightnessinrange);
3062  loadData(is, myTightnessoutrange);
3063  loadData(is, myTightnessremapramp);
3064  loadData(is, myTightnesscurveattrib);
3065  loadData(is, myTightnessclumpattrib);
3066  loadData(is, myTightnessattrib);
3067  loadData(is, myTightnesstexture);
3068  loadData(is, myTightnesstextureprim);
3069  loadData(is, myStrayamount);
3070  loadData(is, myStrayamountoverride);
3071  loadData(is, myStrayamountoptions);
3072  loadData(is, myStrayamountinrange);
3073  loadData(is, myStrayamountoutrange);
3074  loadData(is, myStrayamountremapramp);
3075  loadData(is, myStrayamountcurveattrib);
3076  loadData(is, myStrayamountclumpattrib);
3077  loadData(is, myStrayamountattrib);
3078  loadData(is, myStrayamounttexture);
3079  loadData(is, myStrayamounttextureprim);
3080  loadData(is, myStrayrate);
3081  loadData(is, myStrayrateoverride);
3082  loadData(is, myStrayrateoptions);
3083  loadData(is, myStrayrateinrange);
3084  loadData(is, myStrayrateoutrange);
3085  loadData(is, myStrayrateremapramp);
3086  loadData(is, myStrayratecurveattrib);
3087  loadData(is, myStrayrateclumpattrib);
3088  loadData(is, myStrayrateattrib);
3089  loadData(is, myStrayratetexture);
3090  loadData(is, myStrayratetextureprim);
3091  loadData(is, myStrayfalloff);
3092  loadData(is, myStrayfalloffoverride);
3093  loadData(is, myStrayfalloffoptions);
3094  loadData(is, myStrayfalloffinrange);
3095  loadData(is, myStrayfalloffoutrange);
3096  loadData(is, myStrayfalloffremapramp);
3097  loadData(is, myStrayfalloffcurveattrib);
3098  loadData(is, myStrayfalloffclumpattrib);
3099  loadData(is, myStrayfalloffattrib);
3100  loadData(is, myStrayfallofftexture);
3101  loadData(is, myStrayfallofftextureprim);
3102  loadData(is, myClumpprofile);
3103  loadData(is, myIterations);
3104  loadData(is, myIterationsoverride);
3105  loadData(is, myIterationsoptions);
3106  loadData(is, myIterationsinrange);
3107  loadData(is, myIterationsoutrange);
3108  loadData(is, myIterationsremapramp);
3109  loadData(is, myIterationscurveattrib);
3110  loadData(is, myIterationsattrib);
3111  loadData(is, myIterationstexture);
3112  loadData(is, myIterationstextureprim);
3113  loadData(is, mySizereduction);
3114  loadData(is, mySizereductionoverride);
3115  loadData(is, mySizereductionoptions);
3116  loadData(is, mySizereductioninrange);
3117  loadData(is, mySizereductionoutrange);
3118  loadData(is, mySizereductionremapramp);
3119  loadData(is, mySizereductionattrib);
3120  loadData(is, mySizereductiontexture);
3121  loadData(is, mySizereductiontextureprim);
3122  loadData(is, myGoalfeedback);
3123  loadData(is, myGoalfeedbackoverride);
3124  loadData(is, myGoalfeedbackoptions);
3125  loadData(is, myGoalfeedbackinrange);
3126  loadData(is, myGoalfeedbackoutrange);
3127  loadData(is, myGoalfeedbackremapramp);
3128  loadData(is, myGoalfeedbackattrib);
3129  loadData(is, myGoalfeedbacktexture);
3130  loadData(is, myGoalfeedbacktextureprim);
3131  loadData(is, myTightnessreduction);
3132  loadData(is, myTightnessreductionoverride);
3133  loadData(is, myTightnessreductionoptions);
3134  loadData(is, myTightnessreductioninrange);
3135  loadData(is, myTightnessreductionoutrange);
3136  loadData(is, myTightnessreductionremapramp);
3137  loadData(is, myTightnessreductioncurveattrib);
3138  loadData(is, myTightnessreductionattrib);
3139  loadData(is, myTightnessreductiontexture);
3140  loadData(is, myTightnessreductiontextureprim);
3141  loadData(is, myEnablecurling);
3142  loadData(is, myCurlamp);
3143  loadData(is, myCurlampoverride);
3144  loadData(is, myCurlampoptions);
3145  loadData(is, myCurlampinrange);
3146  loadData(is, myCurlampoutrange);
3147  loadData(is, myCurlampremapramp);
3148  loadData(is, myCurlampcurveattrib);
3149  loadData(is, myCurlampattrib);
3150  loadData(is, myCurlamptexture);
3151  loadData(is, myCurlamptextureprim);
3152  loadData(is, myCurlampramp);
3153  loadData(is, myCurlfreq);
3154  loadData(is, myCurlfreqoverride);
3155  loadData(is, myCurlfreqoptions);
3156  loadData(is, myCurlfreqinrange);
3157  loadData(is, myCurlfreqoutrange);
3158  loadData(is, myCurlfreqremapramp);
3159  loadData(is, myCurlfreqcurveattrib);
3160  loadData(is, myCurlfreqattrib);
3161  loadData(is, myCurlfreqtexture);
3162  loadData(is, myCurlfreqtextureprim);
3163  loadData(is, myCurlfreqramp);
3164  loadData(is, myClumpidinputattrib);
3165  loadData(is, myCreateclumpidattrib);
3166  loadData(is, myClumpidoutputattrib);
3167  loadData(is, myUseorientinputattrib);
3168  loadData(is, myOrientinputattrib);
3169  loadData(is, myCreatetightnessattrib);
3170  loadData(is, myTightnessoutputattrib);
3171  loadData(is, myClumppointattribs);
3172  loadData(is, myClumpprimattribs);
3173 
3174  return true;
3175  }
3176 
3177  bool getLegacymasking() const { return myLegacymasking; }
3178  void setLegacymasking(bool val) { myLegacymasking = val; }
3179  bool opLegacymasking(const SOP_NodeVerb::CookParms &cookparms) const
3180  {
3181  SOP_Node *thissop = cookparms.getNode();
3182  if (!thissop) return getLegacymasking();
3183  bool result;
3184  OP_Utils::evalOpParm(result, thissop, "legacymasking", cookparms.getCookTime(), 0);
3185  return result;
3186  }
3187  const UT_StringHolder & getUvattrib() const { return myUvattrib; }
3188  void setUvattrib(const UT_StringHolder & val) { myUvattrib = val; }
3190  {
3191  SOP_Node *thissop = cookparms.getNode();
3192  if (!thissop) return getUvattrib();
3194  OP_Utils::evalOpParm(result, thissop, "uvattrib", cookparms.getCookTime(), 0);
3195  return result;
3196  }
3197  fpreal64 getBlend() const { return myBlend; }
3198  void setBlend(fpreal64 val) { myBlend = val; }
3199  fpreal64 opBlend(const SOP_NodeVerb::CookParms &cookparms) const
3200  {
3201  SOP_Node *thissop = cookparms.getNode();
3202  if (!thissop) return getBlend();
3203  fpreal64 result;
3204  OP_Utils::evalOpParm(result, thissop, "blend", cookparms.getCookTime(), 0);
3205  return result;
3206  }
3207  Blendoverride getBlendoverride() const { return Blendoverride(myBlendoverride); }
3208  void setBlendoverride(Blendoverride val) { myBlendoverride = int64(val); }
3210  {
3211  SOP_Node *thissop = cookparms.getNode();
3212  if (!thissop) return getBlendoverride();
3213  int64 result;
3214  OP_Utils::evalOpParm(result, thissop, "blendoverride", cookparms.getCookTime(), 0);
3215  return Blendoverride(result);
3216  }
3217  int64 getBlendoptions() const { return myBlendoptions; }
3218  void setBlendoptions(int64 val) { myBlendoptions = val; }
3220  {
3221  SOP_Node *thissop = cookparms.getNode();
3222  if (!thissop) return getBlendoptions();
3223  int64 result;
3224  OP_Utils::evalOpParm(result, thissop, "blendoptions", cookparms.getCookTime(), 0);
3225  return result;
3226  }
3227  UT_Vector2D getBlendinrange() const { return myBlendinrange; }
3228  void setBlendinrange(UT_Vector2D val) { myBlendinrange = val; }
3230  {
3231  SOP_Node *thissop = cookparms.getNode();
3232  if (!thissop) return getBlendinrange();
3234  OP_Utils::evalOpParm(result, thissop, "blendinrange", cookparms.getCookTime(), 0);
3235  return result;
3236  }
3237  UT_Vector2D getBlendoutrange() const { return myBlendoutrange; }
3238  void setBlendoutrange(UT_Vector2D val) { myBlendoutrange = val; }
3240  {
3241  SOP_Node *thissop = cookparms.getNode();
3242  if (!thissop) return getBlendoutrange();
3244  OP_Utils::evalOpParm(result, thissop, "blendoutrange", cookparms.getCookTime(), 0);
3245  return result;
3246  }
3247  UT_SharedPtr<UT_Ramp> getBlendremapramp() const { return myBlendremapramp; }
3248  void setBlendremapramp(UT_SharedPtr<UT_Ramp> val) { myBlendremapramp = val; }
3250  {
3251  SOP_Node *thissop = cookparms.getNode();
3252  if (!thissop) return getBlendremapramp();
3254  OP_Utils::evalOpParm(result, thissop, "blendremapramp", cookparms.getCookTime(), 0);
3255  return result;
3256  }
3257  const UT_StringHolder & getBlendcurveattrib() const { return myBlendcurveattrib; }
3258  void setBlendcurveattrib(const UT_StringHolder & val) { myBlendcurveattrib = val; }
3260  {
3261  SOP_Node *thissop = cookparms.getNode();
3262  if (!thissop) return getBlendcurveattrib();
3264  OP_Utils::evalOpParm(result, thissop, "blendcurveattrib", cookparms.getCookTime(), 0);
3265  return result;
3266  }
3267  const UT_StringHolder & getBlendattrib() const { return myBlendattrib; }
3268  void setBlendattrib(const UT_StringHolder & val) { myBlendattrib = val; }
3270  {
3271  SOP_Node *thissop = cookparms.getNode();
3272  if (!thissop) return getBlendattrib();
3274  OP_Utils::evalOpParm(result, thissop, "blendattrib", cookparms.getCookTime(), 0);
3275  return result;
3276  }
3277  const UT_StringHolder & getBlendtexture() const { return myBlendtexture; }
3278  void setBlendtexture(const UT_StringHolder & val) { myBlendtexture = val; }
3280  {
3281  SOP_Node *thissop = cookparms.getNode();
3282  if (!thissop) return getBlendtexture();
3284  OP_Utils::evalOpParm(result, thissop, "blendtexture", cookparms.getCookTime(), 0);
3285  return result;
3286  }
3287  const UT_StringHolder & getBlendtextureprim() const { return myBlendtextureprim; }
3288  void setBlendtextureprim(const UT_StringHolder & val) { myBlendtextureprim = val; }
3290  {
3291  SOP_Node *thissop = cookparms.getNode();
3292  if (!thissop) return getBlendtextureprim();
3294  OP_Utils::evalOpParm(result, thissop, "blendtextureprim", cookparms.getCookTime(), 0);
3295  return result;
3296  }
3297  bool getUseskinmask() const { return myUseskinmask; }
3298  void setUseskinmask(bool val) { myUseskinmask = val; }
3299  bool opUseskinmask(const SOP_NodeVerb::CookParms &cookparms) const
3300  {
3301  SOP_Node *thissop = cookparms.getNode();
3302  if (!thissop) return getUseskinmask();
3303  bool result;
3304  OP_Utils::evalOpParm(result, thissop, "useskinmask", cookparms.getCookTime(), 0);
3305  return result;
3306  }
3307  const UT_StringHolder & getSkinmaskattrib() const { return mySkinmaskattrib; }
3308  void setSkinmaskattrib(const UT_StringHolder & val) { mySkinmaskattrib = val; }
3310  {
3311  SOP_Node *thissop = cookparms.getNode();
3312  if (!thissop) return getSkinmaskattrib();
3314  OP_Utils::evalOpParm(result, thissop, "skinmaskattrib", cookparms.getCookTime(), 0);
3315  return result;
3316  }
3317  fpreal64 getClumpsize() const { return myClumpsize; }
3318  void setClumpsize(fpreal64 val) { myClumpsize = val; }
3320  {
3321  SOP_Node *thissop = cookparms.getNode();
3322  if (!thissop) return getClumpsize();
3323  fpreal64 result;
3324  OP_Utils::evalOpParm(result, thissop, "clumpsize", cookparms.getCookTime(), 0);
3325  return result;
3326  }
3327  Clumpsizeoverride getClumpsizeoverride() const { return Clumpsizeoverride(myClumpsizeoverride); }
3328  void setClumpsizeoverride(Clumpsizeoverride val) { myClumpsizeoverride = int64(val); }
3330  {
3331  SOP_Node *thissop = cookparms.getNode();
3332  if (!thissop) return getClumpsizeoverride();
3333  int64 result;
3334  OP_Utils::evalOpParm(result, thissop, "clumpsizeoverride", cookparms.getCookTime(), 0);
3335  return Clumpsizeoverride(result);
3336  }
3337  int64 getClumpsizeoptions() const { return myClumpsizeoptions; }
3338  void setClumpsizeoptions(int64 val) { myClumpsizeoptions = val; }
3340  {
3341  SOP_Node *thissop = cookparms.getNode();
3342  if (!thissop) return getClumpsizeoptions();
3343  int64 result;
3344  OP_Utils::evalOpParm(result, thissop, "clumpsizeoptions", cookparms.getCookTime(), 0);
3345  return result;
3346  }
3347  UT_Vector2D getClumpsizeinrange() const { return myClumpsizeinrange; }
3348  void setClumpsizeinrange(UT_Vector2D val) { myClumpsizeinrange = val; }
3350  {
3351  SOP_Node *thissop = cookparms.getNode();
3352  if (!thissop) return getClumpsizeinrange();
3354  OP_Utils::evalOpParm(result, thissop, "clumpsizeinrange", cookparms.getCookTime(), 0);
3355  return result;
3356  }
3357  UT_Vector2D getClumpsizeoutrange() const { return myClumpsizeoutrange; }
3358  void setClumpsizeoutrange(UT_Vector2D val) { myClumpsizeoutrange = val; }
3360  {
3361  SOP_Node *thissop = cookparms.getNode();
3362  if (!thissop) return getClumpsizeoutrange();
3364  OP_Utils::evalOpParm(result, thissop, "clumpsizeoutrange", cookparms.getCookTime(), 0);
3365  return result;
3366  }
3367  UT_SharedPtr<UT_Ramp> getClumpsizeremapramp() const { return myClumpsizeremapramp; }
3368  void setClumpsizeremapramp(UT_SharedPtr<UT_Ramp> val) { myClumpsizeremapramp = val; }
3370  {
3371  SOP_Node *thissop = cookparms.getNode();
3372  if (!thissop) return getClumpsizeremapramp();
3374  OP_Utils::evalOpParm(result, thissop, "clumpsizeremapramp", cookparms.getCookTime(), 0);
3375  return result;
3376  }
3377  const UT_StringHolder & getClumpsizeattrib() const { return myClumpsizeattrib; }
3378  void setClumpsizeattrib(const UT_StringHolder & val) { myClumpsizeattrib = val; }
3380  {
3381  SOP_Node *thissop = cookparms.getNode();
3382  if (!thissop) return getClumpsizeattrib();
3384  OP_Utils::evalOpParm(result, thissop, "clumpsizeattrib", cookparms.getCookTime(), 0);
3385  return result;
3386  }
3387  const UT_StringHolder & getClumpsizetexture() const { return myClumpsizetexture; }
3388  void setClumpsizetexture(const UT_StringHolder & val) { myClumpsizetexture = val; }
3390  {
3391  SOP_Node *thissop = cookparms.getNode();
3392  if (!thissop) return getClumpsizetexture();
3394  OP_Utils::evalOpParm(result, thissop, "clumpsizetexture", cookparms.getCookTime(), 0);
3395  return result;
3396  }
3397  const UT_StringHolder & getClumpsizetextureprim() const { return myClumpsizetextureprim; }
3398  void setClumpsizetextureprim(const UT_StringHolder & val) { myClumpsizetextureprim = val; }
3400  {
3401  SOP_Node *thissop = cookparms.getNode();
3402  if (!thissop) return getClumpsizetextureprim();
3404  OP_Utils::evalOpParm(result, thissop, "clumpsizetextureprim", cookparms.getCookTime(), 0);
3405  return result;
3406  }
3407  bool getSearchbeyondradius() const { return mySearchbeyondradius; }
3408  void setSearchbeyondradius(bool val) { mySearchbeyondradius = val; }
3409  bool opSearchbeyondradius(const SOP_NodeVerb::CookParms &cookparms) const
3410  {
3411  SOP_Node *thissop = cookparms.getNode();
3412  if (!thissop) return getSearchbeyondradius();
3413  bool result;
3414  OP_Utils::evalOpParm(result, thissop, "searchbeyondradius", cookparms.getCookTime(), 0);
3415  return result;
3416  }
3417  bool getClumpwithinclumps() const { return myClumpwithinclumps; }
3418  void setClumpwithinclumps(bool val) { myClumpwithinclumps = val; }
3419  bool opClumpwithinclumps(const SOP_NodeVerb::CookParms &cookparms) const
3420  {
3421  SOP_Node *thissop = cookparms.getNode();
3422  if (!thissop) return getClumpwithinclumps();
3423  bool result;
3424  OP_Utils::evalOpParm(result, thissop, "clumpwithinclumps", cookparms.getCookTime(), 0);
3425  return result;
3426  }
3427  fpreal64 getCrossoverrate() const { return myCrossoverrate; }
3428  void setCrossoverrate(fpreal64 val) { myCrossoverrate = val; }
3430  {
3431  SOP_Node *thissop = cookparms.getNode();
3432  if (!thissop) return getCrossoverrate();
3433  fpreal64 result;
3434  OP_Utils::evalOpParm(result, thissop, "crossoverrate", cookparms.getCookTime(), 0);
3435  return result;
3436  }
3437  fpreal64 getSeed() const { return mySeed; }
3438  void setSeed(fpreal64 val) { mySeed = val; }
3439  fpreal64 opSeed(const SOP_NodeVerb::CookParms &cookparms) const
3440  {
3441  SOP_Node *thissop = cookparms.getNode();
3442  if (!thissop) return getSeed();
3443  fpreal64 result;
3444  OP_Utils::evalOpParm(result, thissop, "seed", cookparms.getCookTime(), 0);
3445  return result;
3446  }
3447  Method getMethod() const { return Method(myMethod); }
3448  void setMethod(Method val) { myMethod = int64(val); }
3449  Method opMethod(const SOP_NodeVerb::CookParms &cookparms) const
3450  {
3451  SOP_Node *thissop = cookparms.getNode();
3452  if (!thissop) return getMethod();
3453  int64 result;
3454  OP_Utils::evalOpParm(result, thissop, "method", cookparms.getCookTime(), 0);
3455  return Method(result);
3456  }
3457  bool getPreservelength() const { return myPreservelength; }
3458  void setPreservelength(bool val) { myPreservelength = val; }
3459  bool opPreservelength(const SOP_NodeVerb::CookParms &cookparms) const
3460  {
3461  SOP_Node *thissop = cookparms.getNode();
3462  if (!thissop) return getPreservelength();
3463  bool result;
3464  OP_Utils::evalOpParm(result, thissop, "preservelength", cookparms.getCookTime(), 0);
3465  return result;
3466  }
3467  fpreal64 getExtendtomatch() const { return myExtendtomatch; }
3468  void setExtendtomatch(fpreal64 val) { myExtendtomatch = val; }
3470  {
3471  SOP_Node *thissop = cookparms.getNode();
3472  if (!thissop) return getExtendtomatch();
3473  fpreal64 result;
3474  OP_Utils::evalOpParm(result, thissop, "extendtomatch", cookparms.getCookTime(), 0);
3475  return result;
3476  }
3477  fpreal64 getShortentomatch() const { return myShortentomatch; }
3478  void setShortentomatch(fpreal64 val) { myShortentomatch = val; }
3480  {
3481  SOP_Node *thissop = cookparms.getNode();
3482  if (!thissop) return getShortentomatch();
3483  fpreal64 result;
3484  OP_Utils::evalOpParm(result, thissop, "shortentomatch", cookparms.getCookTime(), 0);
3485  return result;
3486  }
3487  bool getAccuratebundling() const { return myAccuratebundling; }
3488  void setAccuratebundling(bool val) { myAccuratebundling = val; }
3489  bool opAccuratebundling(const SOP_NodeVerb::CookParms &cookparms) const
3490  {
3491  SOP_Node *thissop = cookparms.getNode();
3492  if (!thissop) return getAccuratebundling();
3493  bool result;
3494  OP_Utils::evalOpParm(result, thissop, "accuratebundling", cookparms.getCookTime(), 0);
3495  return result;
3496  }
3497  fpreal64 getHairwidth() const { return myHairwidth; }
3498  void setHairwidth(fpreal64 val) { myHairwidth = val; }
3500  {
3501  SOP_Node *thissop = cookparms.getNode();
3502  if (!thissop) return getHairwidth();
3503  fpreal64 result;
3504  OP_Utils::evalOpParm(result, thissop, "hairwidth", cookparms.getCookTime(), 0);
3505  return result;
3506  }
3507  fpreal64 getHairwidthscale() const { return myHairwidthscale; }
3508  void setHairwidthscale(fpreal64 val) { myHairwidthscale = val; }
3510  {
3511  SOP_Node *thissop = cookparms.getNode();
3512  if (!thissop) return getHairwidthscale();
3513  fpreal64 result;
3514  OP_Utils::evalOpParm(result, thissop, "hairwidthscale", cookparms.getCookTime(), 0);
3515  return result;
3516  }
3517  fpreal64 getTightness() const { return myTightness; }
3518  void setTightness(fpreal64 val) { myTightness = val; }
3520  {
3521  SOP_Node *thissop = cookparms.getNode();
3522  if (!thissop) return getTightness();
3523  fpreal64 result;
3524  OP_Utils::evalOpParm(result, thissop, "tightness", cookparms.getCookTime(), 0);
3525  return result;
3526  }
3527  Tightnessoverride getTightnessoverride() const { return Tightnessoverride(myTightnessoverride); }
3528  void setTightnessoverride(Tightnessoverride val) { myTightnessoverride = int64(val); }
3530  {
3531  SOP_Node *thissop = cookparms.getNode();
3532  if (!thissop) return getTightnessoverride();
3533  int64 result;
3534  OP_Utils::evalOpParm(result, thissop, "tightnessoverride", cookparms.getCookTime(), 0);
3535  return Tightnessoverride(result);
3536  }
3537  int64 getTightnessoptions() const { return myTightnessoptions; }
3538  void setTightnessoptions(int64 val) { myTightnessoptions = val; }
3540  {
3541  SOP_Node *thissop = cookparms.getNode();
3542  if (!thissop) return getTightnessoptions();
3543  int64 result;
3544  OP_Utils::evalOpParm(result, thissop, "tightnessoptions", cookparms.getCookTime(), 0);
3545  return result;
3546  }
3547  UT_Vector2D getTightnessinrange() const { return myTightnessinrange; }
3548  void setTightnessinrange(UT_Vector2D val) { myTightnessinrange = val; }
3550  {
3551  SOP_Node *thissop = cookparms.getNode();
3552  if (!thissop) return getTightnessinrange();
3554  OP_Utils::evalOpParm(result, thissop, "tightnessinrange", cookparms.getCookTime(), 0);
3555  return result;
3556  }
3557  UT_Vector2D getTightnessoutrange() const { return myTightnessoutrange; }
3558  void setTightnessoutrange(UT_Vector2D val) { myTightnessoutrange = val; }
3560  {
3561  SOP_Node *thissop = cookparms.getNode();
3562  if (!thissop) return getTightnessoutrange();
3564  OP_Utils::evalOpParm(result, thissop, "tightnessoutrange", cookparms.getCookTime(), 0);
3565  return result;
3566  }
3567  UT_SharedPtr<UT_Ramp> getTightnessremapramp() const { return myTightnessremapramp; }
3568  void setTightnessremapramp(UT_SharedPtr<UT_Ramp> val) { myTightnessremapramp = val; }
3570  {
3571  SOP_Node *thissop = cookparms.getNode();
3572  if (!thissop) return getTightnessremapramp();
3574  OP_Utils::evalOpParm(result, thissop, "tightnessremapramp", cookparms.getCookTime(), 0);
3575  return result;
3576  }
3577  const UT_StringHolder & getTightnesscurveattrib() const { return myTightnesscurveattrib; }
3578  void setTightnesscurveattrib(const UT_StringHolder & val) { myTightnesscurveattrib = val; }
3580  {
3581  SOP_Node *thissop = cookparms.getNode();
3582  if (!thissop) return getTightnesscurveattrib();
3584  OP_Utils::evalOpParm(result, thissop, "tightnesscurveattrib", cookparms.getCookTime(), 0);
3585  return result;
3586  }
3587  const UT_StringHolder & getTightnessclumpattrib() const { return myTightnessclumpattrib; }
3588  void setTightnessclumpattrib(const UT_StringHolder & val) { myTightnessclumpattrib = val; }
3590  {
3591  SOP_Node *thissop = cookparms.getNode();
3592  if (!thissop) return getTightnessclumpattrib();
3594  OP_Utils::evalOpParm(result, thissop, "tightnessclumpattrib", cookparms.getCookTime(), 0);
3595  return result;
3596  }
3597  const UT_StringHolder & getTightnessattrib() const { return myTightnessattrib; }
3598  void setTightnessattrib(const UT_StringHolder & val) { myTightnessattrib = val; }
3600  {
3601  SOP_Node *thissop = cookparms.getNode();
3602  if (!thissop) return getTightnessattrib();
3604  OP_Utils::evalOpParm(result, thissop, "tightnessattrib", cookparms.getCookTime(), 0);
3605  return result;
3606  }
3607  const UT_StringHolder & getTightnesstexture() const { return myTightnesstexture; }
3608  void setTightnesstexture(const UT_StringHolder & val) { myTightnesstexture = val; }
3610  {
3611  SOP_Node *thissop = cookparms.getNode();
3612  if (!thissop) return getTightnesstexture();
3614  OP_Utils::evalOpParm(result, thissop, "tightnesstexture", cookparms.getCookTime(), 0);
3615  return result;
3616  }
3617  const UT_StringHolder & getTightnesstextureprim() const { return myTightnesstextureprim; }
3618  void setTightnesstextureprim(const UT_StringHolder & val) { myTightnesstextureprim = val; }
3620  {
3621  SOP_Node *thissop = cookparms.getNode();
3622  if (!thissop) return getTightnesstextureprim();
3624  OP_Utils::evalOpParm(result, thissop, "tightnesstextureprim", cookparms.getCookTime(), 0);
3625  return result;
3626  }
3627  fpreal64 getStrayamount() const { return myStrayamount; }
3628  void setStrayamount(fpreal64 val) { myStrayamount = val; }
3630  {
3631  SOP_Node *thissop = cookparms.getNode();
3632  if (!thissop) return getStrayamount();
3633  fpreal64 result;
3634  OP_Utils::evalOpParm(result, thissop, "strayamount", cookparms.getCookTime(), 0);
3635  return result;
3636  }
3637  Strayamountoverride getStrayamountoverride() const { return Strayamountoverride(myStrayamountoverride); }
3638  void setStrayamountoverride(Strayamountoverride val) { myStrayamountoverride = int64(val); }
3640  {
3641  SOP_Node *thissop = cookparms.getNode();
3642  if (!thissop) return getStrayamountoverride();
3643  int64 result;
3644  OP_Utils::evalOpParm(result, thissop, "strayamountoverride", cookparms.getCookTime(), 0);
3645  return Strayamountoverride(result);
3646  }
3647  int64 getStrayamountoptions() const { return myStrayamountoptions; }
3648  void setStrayamountoptions(int64 val) { myStrayamountoptions = val; }
3650  {
3651  SOP_Node *thissop = cookparms.getNode();
3652  if (!thissop) return getStrayamountoptions();
3653  int64 result;
3654  OP_Utils::evalOpParm(result, thissop, "strayamountoptions", cookparms.getCookTime(), 0);
3655  return result;
3656  }
3657  UT_Vector2D getStrayamountinrange() const { return myStrayamountinrange; }
3658  void setStrayamountinrange(UT_Vector2D val) { myStrayamountinrange = val; }
3660  {
3661  SOP_Node *thissop = cookparms.getNode();
3662  if (!thissop) return getStrayamountinrange();
3664  OP_Utils::evalOpParm(result, thissop, "strayamountinrange", cookparms.getCookTime(), 0);
3665  return result;
3666  }
3667  UT_Vector2D getStrayamountoutrange() const { return myStrayamountoutrange; }
3668  void setStrayamountoutrange(UT_Vector2D val) { myStrayamountoutrange = val; }
3670  {
3671  SOP_Node *thissop = cookparms.getNode();
3672  if (!thissop) return getStrayamountoutrange();
3674  OP_Utils::evalOpParm(result, thissop, "strayamountoutrange", cookparms.getCookTime(), 0);
3675  return result;
3676  }
3677  UT_SharedPtr<UT_Ramp> getStrayamountremapramp() const { return myStrayamountremapramp; }
3678  void setStrayamountremapramp(UT_SharedPtr<UT_Ramp> val) { myStrayamountremapramp = val; }
3680  {
3681  SOP_Node *thissop = cookparms.getNode();
3682  if (!thissop) return getStrayamountremapramp();
3684  OP_Utils::evalOpParm(result, thissop, "strayamountremapramp", cookparms.getCookTime(), 0);
3685  return result;
3686  }
3687  const UT_StringHolder & getStrayamountcurveattrib() const { return myStrayamountcurveattrib; }
3688  void setStrayamountcurveattrib(const UT_StringHolder & val) { myStrayamountcurveattrib = val; }
3690  {
3691  SOP_Node *thissop = cookparms.getNode();
3692  if (!thissop) return getStrayamountcurveattrib();
3694  OP_Utils::evalOpParm(result, thissop, "strayamountcurveattrib", cookparms.getCookTime(), 0);
3695  return result;
3696  }
3697  const UT_StringHolder & getStrayamountclumpattrib() const { return myStrayamountclumpattrib; }
3698  void setStrayamountclumpattrib(const UT_StringHolder & val) { myStrayamountclumpattrib = val; }
3700  {
3701  SOP_Node *thissop = cookparms.getNode();
3702  if (!thissop) return getStrayamountclumpattrib();
3704  OP_Utils::evalOpParm(result, thissop, "strayamountclumpattrib", cookparms.getCookTime(), 0);
3705  return result;
3706  }
3707  const UT_StringHolder & getStrayamountattrib() const { return myStrayamountattrib; }
3708  void setStrayamountattrib(const UT_StringHolder & val) { myStrayamountattrib = val; }
3710  {
3711  SOP_Node *thissop = cookparms.getNode();
3712  if (!thissop) return getStrayamountattrib();
3714  OP_Utils::evalOpParm(result, thissop, "strayamountattrib", cookparms.getCookTime(), 0);
3715  return result;
3716  }
3717  const UT_StringHolder & getStrayamounttexture() const { return myStrayamounttexture; }
3718  void setStrayamounttexture(const UT_StringHolder & val) { myStrayamounttexture = val; }
3720  {
3721  SOP_Node *thissop = cookparms.getNode();
3722  if (!thissop) return getStrayamounttexture();
3724  OP_Utils::evalOpParm(result, thissop, "strayamounttexture", cookparms.getCookTime(), 0);
3725  return result;
3726  }
3727  const UT_StringHolder & getStrayamounttextureprim() const { return myStrayamounttextureprim; }
3728  void setStrayamounttextureprim(const UT_StringHolder & val) { myStrayamounttextureprim = val; }
3730  {
3731  SOP_Node *thissop = cookparms.getNode();
3732  if (!thissop) return getStrayamounttextureprim();
3734  OP_Utils::evalOpParm(result, thissop, "strayamounttextureprim", cookparms.getCookTime(), 0);
3735  return result;
3736  }
3737  fpreal64 getStrayrate() const { return myStrayrate; }
3738  void setStrayrate(fpreal64 val) { myStrayrate = val; }
3740  {
3741  SOP_Node *thissop = cookparms.getNode();
3742  if (!thissop) return getStrayrate();
3743  fpreal64 result;
3744  OP_Utils::evalOpParm(result, thissop, "strayrate", cookparms.getCookTime(), 0);
3745  return result;
3746  }
3747  Strayrateoverride getStrayrateoverride() const { return Strayrateoverride(myStrayrateoverride); }
3748  void setStrayrateoverride(Strayrateoverride val) { myStrayrateoverride = int64(val); }
3750  {
3751  SOP_Node *thissop = cookparms.getNode();
3752  if (!thissop) return getStrayrateoverride();
3753  int64 result;
3754  OP_Utils::evalOpParm(result, thissop, "strayrateoverride", cookparms.getCookTime(), 0);
3755  return Strayrateoverride(result);
3756  }
3757  int64 getStrayrateoptions() const { return myStrayrateoptions; }
3758  void setStrayrateoptions(int64 val) { myStrayrateoptions = val; }
3760  {
3761  SOP_Node *thissop = cookparms.getNode();
3762  if (!thissop) return getStrayrateoptions();
3763  int64 result;
3764  OP_Utils::evalOpParm(result, thissop, "strayrateoptions", cookparms.getCookTime(), 0);
3765  return result;
3766  }
3767  UT_Vector2D getStrayrateinrange() const { return myStrayrateinrange; }
3768  void setStrayrateinrange(UT_Vector2D val) { myStrayrateinrange = val; }
3770  {
3771  SOP_Node *thissop = cookparms.getNode();
3772  if (!thissop) return getStrayrateinrange();
3774  OP_Utils::evalOpParm(result, thissop, "strayrateinrange", cookparms.getCookTime(), 0);
3775  return result;
3776  }
3777  UT_Vector2D getStrayrateoutrange() const { return myStrayrateoutrange; }
3778  void setStrayrateoutrange(UT_Vector2D val) { myStrayrateoutrange = val; }
3780  {
3781  SOP_Node *thissop = cookparms.getNode();
3782  if (!thissop) return getStrayrateoutrange();
3784  OP_Utils::evalOpParm(result, thissop, "strayrateoutrange", cookparms.getCookTime(), 0);
3785  return result;
3786  }
3787  UT_SharedPtr<UT_Ramp> getStrayrateremapramp() const { return myStrayrateremapramp; }
3788  void setStrayrateremapramp(UT_SharedPtr<UT_Ramp> val) { myStrayrateremapramp = val; }
3790  {
3791  SOP_Node *thissop = cookparms.getNode();
3792  if (!thissop) return getStrayrateremapramp();
3794  OP_Utils::evalOpParm(result, thissop, "strayrateremapramp", cookparms.getCookTime(), 0);
3795  return result;
3796  }
3797  const UT_StringHolder & getStrayratecurveattrib() const { return myStrayratecurveattrib; }
3798  void setStrayratecurveattrib(const UT_StringHolder & val) { myStrayratecurveattrib = val; }
3800  {
3801  SOP_Node *thissop = cookparms.getNode();
3802  if (!thissop) return getStrayratecurveattrib();
3804  OP_Utils::evalOpParm(result, thissop, "strayratecurveattrib", cookparms.getCookTime(), 0);
3805  return result;
3806  }
3807  const UT_StringHolder & getStrayrateclumpattrib() const { return myStrayrateclumpattrib; }
3808  void setStrayrateclumpattrib(const UT_StringHolder & val) { myStrayrateclumpattrib = val; }
3810  {
3811  SOP_Node *thissop = cookparms.getNode();
3812  if (!thissop) return getStrayrateclumpattrib();
3814  OP_Utils::evalOpParm(result, thissop, "strayrateclumpattrib", cookparms.getCookTime(), 0);
3815  return result;
3816  }
3817  const UT_StringHolder & getStrayrateattrib() const { return myStrayrateattrib; }
3818  void setStrayrateattrib(const UT_StringHolder & val) { myStrayrateattrib = val; }
3820  {
3821  SOP_Node *thissop = cookparms.getNode();
3822  if (!thissop) return getStrayrateattrib();
3824  OP_Utils::evalOpParm(result, thissop, "strayrateattrib", cookparms.getCookTime(), 0);
3825  return result;
3826  }
3827  const UT_StringHolder & getStrayratetexture() const { return myStrayratetexture; }
3828  void setStrayratetexture(const UT_StringHolder & val) { myStrayratetexture = val; }
3830  {
3831  SOP_Node *thissop = cookparms.getNode();
3832  if (!thissop) return getStrayratetexture();
3834  OP_Utils::evalOpParm(result, thissop, "strayratetexture", cookparms.getCookTime(), 0);
3835  return result;
3836  }
3837  const UT_StringHolder & getStrayratetextureprim() const { return myStrayratetextureprim; }
3838  void setStrayratetextureprim(const UT_StringHolder & val) { myStrayratetextureprim = val; }
3840  {
3841  SOP_Node *thissop = cookparms.getNode();
3842  if (!thissop) return getStrayratetextureprim();
3844  OP_Utils::evalOpParm(result, thissop, "strayratetextureprim", cookparms.getCookTime(), 0);
3845  return result;
3846  }
3847  fpreal64 getStrayfalloff() const { return myStrayfalloff; }
3848  void setStrayfalloff(fpreal64 val) { myStrayfalloff = val; }
3850  {
3851  SOP_Node *thissop = cookparms.getNode();
3852  if (!thissop) return getStrayfalloff();
3853  fpreal64 result;
3854  OP_Utils::evalOpParm(result, thissop, "strayfalloff", cookparms.getCookTime(), 0);
3855  return result;
3856  }
3857  Strayfalloffoverride getStrayfalloffoverride() const { return Strayfalloffoverride(myStrayfalloffoverride); }
3858  void setStrayfalloffoverride(Strayfalloffoverride val) { myStrayfalloffoverride = int64(val); }
3860  {
3861  SOP_Node *thissop = cookparms.getNode();
3862  if (!thissop) return getStrayfalloffoverride();
3863  int64 result;
3864  OP_Utils::evalOpParm(result, thissop, "strayfalloffoverride", cookparms.getCookTime(), 0);
3865  return Strayfalloffoverride(result);
3866  }
3867  int64 getStrayfalloffoptions() const { return myStrayfalloffoptions; }
3868  void setStrayfalloffoptions(int64 val) { myStrayfalloffoptions = val; }
3870  {
3871  SOP_Node *thissop = cookparms.getNode();
3872  if (!thissop) return getStrayfalloffoptions();
3873  int64 result;
3874  OP_Utils::evalOpParm(result, thissop, "strayfalloffoptions", cookparms.getCookTime(), 0);
3875  return result;
3876  }
3877  UT_Vector2D getStrayfalloffinrange() const { return myStrayfalloffinrange; }
3878  void setStrayfalloffinrange(UT_Vector2D val) { myStrayfalloffinrange = val; }
3880  {
3881  SOP_Node *thissop = cookparms.getNode();
3882  if (!thissop) return getStrayfalloffinrange();
3884  OP_Utils::evalOpParm(result, thissop, "strayfalloffinrange", cookparms.getCookTime(), 0);
3885  return result;
3886  }
3887  UT_Vector2D getStrayfalloffoutrange() const { return myStrayfalloffoutrange; }
3888  void setStrayfalloffoutrange(UT_Vector2D val) { myStrayfalloffoutrange = val; }
3890  {
3891  SOP_Node *thissop = cookparms.getNode();
3892  if (!thissop) return getStrayfalloffoutrange();
3894  OP_Utils::evalOpParm(result, thissop, "strayfalloffoutrange", cookparms.getCookTime(), 0);
3895  return result;
3896  }
3897  UT_SharedPtr<UT_Ramp> getStrayfalloffremapramp() const { return myStrayfalloffremapramp; }
3898  void setStrayfalloffremapramp(UT_SharedPtr<UT_Ramp> val) { myStrayfalloffremapramp = val; }
3900  {
3901  SOP_Node *thissop = cookparms.getNode();
3902  if (!thissop) return getStrayfalloffremapramp();
3904  OP_Utils::evalOpParm(result, thissop, "strayfalloffremapramp", cookparms.getCookTime(), 0);
3905  return result;
3906  }
3907  const UT_StringHolder & getStrayfalloffcurveattrib() const { return myStrayfalloffcurveattrib; }
3908  void setStrayfalloffcurveattrib(const UT_StringHolder & val) { myStrayfalloffcurveattrib = val; }
3910  {
3911  SOP_Node *thissop = cookparms.getNode();
3912  if (!thissop) return getStrayfalloffcurveattrib();
3914  OP_Utils::evalOpParm(result, thissop, "strayfalloffcurveattrib", cookparms.getCookTime(), 0);
3915  return result;
3916  }
3917  const UT_StringHolder & getStrayfalloffclumpattrib() const { return myStrayfalloffclumpattrib; }
3918  void setStrayfalloffclumpattrib(const UT_StringHolder & val) { myStrayfalloffclumpattrib = val; }
3920  {
3921  SOP_Node *thissop = cookparms.getNode();
3922  if (!thissop) return getStrayfalloffclumpattrib();
3924  OP_Utils::evalOpParm(result, thissop, "strayfalloffclumpattrib", cookparms.getCookTime(), 0);
3925  return result;
3926  }
3927  const UT_StringHolder & getStrayfalloffattrib() const { return myStrayfalloffattrib; }
3928  void setStrayfalloffattrib(const UT_StringHolder & val) { myStrayfalloffattrib = val; }
3930  {
3931  SOP_Node *thissop = cookparms.getNode();
3932  if (!thissop) return getStrayfalloffattrib();
3934  OP_Utils::evalOpParm(result, thissop, "strayfalloffattrib", cookparms.getCookTime(), 0);
3935  return result;
3936  }
3937  const UT_StringHolder & getStrayfallofftexture() const { return myStrayfallofftexture; }
3938  void setStrayfallofftexture(const UT_StringHolder & val) { myStrayfallofftexture = val; }
3940  {
3941  SOP_Node *thissop = cookparms.getNode();
3942  if (!thissop) return getStrayfallofftexture();
3944  OP_Utils::evalOpParm(result, thissop, "strayfallofftexture", cookparms.getCookTime(), 0);
3945  return result;
3946  }
3947  const UT_StringHolder & getStrayfallofftextureprim() const { return myStrayfallofftextureprim; }
3948  void setStrayfallofftextureprim(const UT_StringHolder & val) { myStrayfallofftextureprim = val; }
3950  {
3951  SOP_Node *thissop = cookparms.getNode();
3952  if (!thissop) return getStrayfallofftextureprim();
3954  OP_Utils::evalOpParm(result, thissop, "strayfallofftextureprim", cookparms.getCookTime(), 0);
3955  return result;
3956  }
3957  UT_SharedPtr<UT_Ramp> getClumpprofile() const { return myClumpprofile; }
3958  void setClumpprofile(UT_SharedPtr<UT_Ramp> val) { myClumpprofile = val; }
3960  {
3961  SOP_Node *thissop = cookparms.getNode();
3962  if (!thissop) return getClumpprofile();
3964  OP_Utils::evalOpParm(result, thissop, "clumpprofile", cookparms.getCookTime(), 0);
3965  return result;
3966  }
3967  fpreal64 getIterations() const { return myIterations; }
3968  void setIterations(fpreal64 val) { myIterations = val; }
3970  {
3971  SOP_Node *thissop = cookparms.getNode();
3972  if (!thissop) return getIterations();
3973  fpreal64 result;
3974  OP_Utils::evalOpParm(result, thissop, "iterations", cookparms.getCookTime(), 0);
3975  return result;
3976  }
3977  Iterationsoverride getIterationsoverride() const { return Iterationsoverride(myIterationsoverride); }
3978  void setIterationsoverride(Iterationsoverride val) { myIterationsoverride = int64(val); }
3980  {
3981  SOP_Node *thissop = cookparms.getNode();
3982  if (!thissop) return getIterationsoverride();
3983  int64 result;
3984  OP_Utils::evalOpParm(result, thissop, "iterationsoverride", cookparms.getCookTime(), 0);
3985  return Iterationsoverride(result);
3986  }
3987  int64 getIterationsoptions() const { return myIterationsoptions; }
3988  void setIterationsoptions(int64 val) { myIterationsoptions = val; }
3990  {
3991  SOP_Node *thissop = cookparms.getNode();
3992  if (!thissop) return getIterationsoptions();
3993  int64 result;
3994  OP_Utils::evalOpParm(result, thissop, "iterationsoptions", cookparms.getCookTime(), 0);
3995  return result;
3996  }
3997  UT_Vector2D getIterationsinrange() const { return myIterationsinrange; }
3998  void setIterationsinrange(UT_Vector2D val) { myIterationsinrange = val; }
4000  {
4001  SOP_Node *thissop = cookparms.getNode();
4002  if (!thissop) return getIterationsinrange();
4004  OP_Utils::evalOpParm(result, thissop, "iterationsinrange", cookparms.getCookTime(), 0);
4005  return result;
4006  }
4007  UT_Vector2D getIterationsoutrange() const { return myIterationsoutrange; }
4008  void setIterationsoutrange(UT_Vector2D val) { myIterationsoutrange = val; }
4010  {
4011  SOP_Node *thissop = cookparms.getNode();
4012  if (!thissop) return getIterationsoutrange();
4014  OP_Utils::evalOpParm(result, thissop, "iterationsoutrange", cookparms.getCookTime(), 0);
4015  return result;
4016  }
4017  UT_SharedPtr<UT_Ramp> getIterationsremapramp() const { return myIterationsremapramp; }
4018  void setIterationsremapramp(UT_SharedPtr<UT_Ramp> val) { myIterationsremapramp = val; }
4020  {
4021  SOP_Node *thissop = cookparms.getNode();
4022  if (!thissop) return getIterationsremapramp();
4024  OP_Utils::evalOpParm(result, thissop, "iterationsremapramp", cookparms.getCookTime(), 0);
4025  return result;
4026  }
4027  const UT_StringHolder & getIterationscurveattrib() const { return myIterationscurveattrib; }
4028  void setIterationscurveattrib(const UT_StringHolder & val) { myIterationscurveattrib = val; }
4030  {
4031  SOP_Node *thissop = cookparms.getNode();
4032  if (!thissop) return getIterationscurveattrib();
4034  OP_Utils::evalOpParm(result, thissop, "iterationscurveattrib", cookparms.getCookTime(), 0);
4035  return result;
4036  }
4037  const UT_StringHolder & getIterationsattrib() const { return myIterationsattrib; }
4038  void setIterationsattrib(const UT_StringHolder & val) { myIterationsattrib = val; }
4040  {
4041  SOP_Node *thissop = cookparms.getNode();
4042  if (!thissop) return getIterationsattrib();
4044  OP_Utils::evalOpParm(result, thissop, "iterationsattrib", cookparms.getCookTime(), 0);
4045  return result;
4046  }
4047  const UT_StringHolder & getIterationstexture() const { return myIterationstexture; }
4048  void setIterationstexture(const UT_StringHolder & val) { myIterationstexture = val; }
4050  {
4051  SOP_Node *thissop = cookparms.getNode();
4052  if (!thissop) return getIterationstexture();
4054  OP_Utils::evalOpParm(result, thissop, "iterationstexture", cookparms.getCookTime(), 0);
4055  return result;
4056  }
4057  const UT_StringHolder & getIterationstextureprim() const { return myIterationstextureprim; }
4058  void setIterationstextureprim(const UT_StringHolder & val) { myIterationstextureprim = val; }
4060  {
4061  SOP_Node *thissop = cookparms.getNode();
4062  if (!thissop) return getIterationstextureprim();
4064  OP_Utils::evalOpParm(result, thissop, "iterationstextureprim", cookparms.getCookTime(), 0);
4065  return result;
4066  }
4067  fpreal64 getSizereduction() const { return mySizereduction; }
4068  void setSizereduction(fpreal64 val) { mySizereduction = val; }
4070  {
4071  SOP_Node *thissop = cookparms.getNode();
4072  if (!thissop) return getSizereduction();
4073  fpreal64 result;
4074  OP_Utils::evalOpParm(result, thissop, "sizereduction", cookparms.getCookTime(), 0);
4075  return result;
4076  }
4077  Sizereductionoverride getSizereductionoverride() const { return Sizereductionoverride(mySizereductionoverride); }
4078  void setSizereductionoverride(Sizereductionoverride val) { mySizereductionoverride = int64(val); }
4080  {
4081  SOP_Node *thissop = cookparms.getNode();
4082  if (!thissop) return getSizereductionoverride();
4083  int64 result;
4084  OP_Utils::evalOpParm(result, thissop, "sizereductionoverride", cookparms.getCookTime(), 0);
4085  return Sizereductionoverride(result);
4086  }
4087  int64 getSizereductionoptions() const { return mySizereductionoptions; }
4088  void setSizereductionoptions(int64 val) { mySizereductionoptions = val; }
4090  {
4091  SOP_Node *thissop = cookparms.getNode();
4092  if (!thissop) return getSizereductionoptions();
4093  int64 result;
4094  OP_Utils::evalOpParm(result, thissop, "sizereductionoptions", cookparms.getCookTime(), 0);
4095  return result;
4096  }
4097  UT_Vector2D getSizereductioninrange() const { return mySizereductioninrange; }
4098  void setSizereductioninrange(UT_Vector2D val) { mySizereductioninrange = val; }
4100  {
4101  SOP_Node *thissop = cookparms.getNode();
4102  if (!thissop) return getSizereductioninrange();
4104  OP_Utils::evalOpParm(result, thissop, "sizereductioninrange", cookparms.getCookTime(), 0);
4105  return result;
4106  }
4107  UT_Vector2D getSizereductionoutrange() const { return mySizereductionoutrange; }
4108  void setSizereductionoutrange(UT_Vector2D val) { mySizereductionoutrange = val; }
4110  {
4111  SOP_Node *thissop = cookparms.getNode();
4112  if (!thissop) return getSizereductionoutrange();
4114  OP_Utils::evalOpParm(result, thissop, "sizereductionoutrange", cookparms.getCookTime(), 0);
4115  return result;
4116  }
4117  UT_SharedPtr<UT_Ramp> getSizereductionremapramp() const { return mySizereductionremapramp; }
4118  void setSizereductionremapramp(UT_SharedPtr<UT_Ramp> val) { mySizereductionremapramp = val; }
4120  {
4121  SOP_Node *thissop = cookparms.getNode();
4122  if (!thissop) return getSizereductionremapramp();
4124  OP_Utils::evalOpParm(result, thissop, "sizereductionremapramp", cookparms.getCookTime(), 0);
4125  return result;
4126  }
4127  const UT_StringHolder & getSizereductionattrib() const { return mySizereductionattrib; }
4128  void setSizereductionattrib(const UT_StringHolder & val) { mySizereductionattrib = val; }
4130  {
4131  SOP_Node *thissop = cookparms.getNode();
4132  if (!thissop) return getSizereductionattrib();
4134  OP_Utils::evalOpParm(result, thissop, "sizereductionattrib", cookparms.getCookTime(), 0);
4135  return result;
4136  }
4137  const UT_StringHolder & getSizereductiontexture() const { return mySizereductiontexture; }
4138  void setSizereductiontexture(const UT_StringHolder & val) { mySizereductiontexture = val; }
4140  {
4141  SOP_Node *thissop = cookparms.getNode();
4142  if (!thissop) return getSizereductiontexture();
4144  OP_Utils::evalOpParm(result, thissop, "sizereductiontexture", cookparms.getCookTime(), 0);
4145  return result;
4146  }
4147  const UT_StringHolder & getSizereductiontextureprim() const { return mySizereductiontextureprim; }
4148  void setSizereductiontextureprim(const UT_StringHolder & val) { mySizereductiontextureprim = val; }
4150  {
4151  SOP_Node *thissop = cookparms.getNode();
4152  if (!thissop) return getSizereductiontextureprim();
4154  OP_Utils::evalOpParm(result, thissop, "sizereductiontextureprim", cookparms.getCookTime(), 0);
4155  return result;
4156  }
4157  fpreal64 getGoalfeedback() const { return myGoalfeedback; }
4158  void setGoalfeedback(fpreal64 val) { myGoalfeedback = val; }
4160  {
4161  SOP_Node *thissop = cookparms.getNode();
4162  if (!thissop) return getGoalfeedback();
4163  fpreal64 result;
4164  OP_Utils::evalOpParm(result, thissop, "goalfeedback", cookparms.getCookTime(), 0);
4165  return result;
4166  }
4167  Goalfeedbackoverride getGoalfeedbackoverride() const { return Goalfeedbackoverride(myGoalfeedbackoverride); }
4168  void setGoalfeedbackoverride(Goalfeedbackoverride val) { myGoalfeedbackoverride = int64(val); }
4170  {
4171  SOP_Node *thissop = cookparms.getNode();
4172  if (!thissop) return getGoalfeedbackoverride();
4173  int64 result;
4174  OP_Utils::evalOpParm(result, thissop, "goalfeedbackoverride", cookparms.getCookTime(), 0);
4175  return Goalfeedbackoverride(result);
4176  }
4177  int64 getGoalfeedbackoptions() const { return myGoalfeedbackoptions; }
4178  void setGoalfeedbackoptions(int64 val) { myGoalfeedbackoptions = val; }
4180  {
4181  SOP_Node *thissop = cookparms.getNode();
4182  if (!thissop) return getGoalfeedbackoptions();
4183  int64 result;
4184  OP_Utils::evalOpParm(result, thissop, "goalfeedbackoptions", cookparms.getCookTime(), 0);
4185  return result;
4186  }
4187  UT_Vector2D getGoalfeedbackinrange() const { return myGoalfeedbackinrange; }
4188  void setGoalfeedbackinrange(UT_Vector2D val) { myGoalfeedbackinrange = val; }
4190  {
4191  SOP_Node *thissop = cookparms.getNode();
4192  if (!thissop) return getGoalfeedbackinrange();
4194  OP_Utils::evalOpParm(result, thissop, "goalfeedbackinrange", cookparms.getCookTime(), 0);
4195  return result;
4196  }
4197  UT_Vector2D getGoalfeedbackoutrange() const { return myGoalfeedbackoutrange; }
4198  void setGoalfeedbackoutrange(UT_Vector2D val) { myGoalfeedbackoutrange = val; }
4200  {
4201  SOP_Node *thissop = cookparms.getNode();
4202  if (!thissop) return getGoalfeedbackoutrange();
4204  OP_Utils::evalOpParm(result, thissop, "goalfeedbackoutrange", cookparms.getCookTime(), 0);
4205  return result;
4206  }
4207  UT_SharedPtr<UT_Ramp> getGoalfeedbackremapramp() const { return myGoalfeedbackremapramp; }
4208  void setGoalfeedbackremapramp(UT_SharedPtr<UT_Ramp> val) { myGoalfeedbackremapramp = val; }
4210  {
4211  SOP_Node *thissop = cookparms.getNode();
4212  if (!thissop) return getGoalfeedbackremapramp();
4214  OP_Utils::evalOpParm(result, thissop, "goalfeedbackremapramp", cookparms.getCookTime(), 0);
4215  return result;
4216  }
4217  const UT_StringHolder & getGoalfeedbackattrib() const { return myGoalfeedbackattrib; }
4218  void setGoalfeedbackattrib(const UT_StringHolder & val) { myGoalfeedbackattrib = val; }
4220  {
4221  SOP_Node *thissop = cookparms.getNode();
4222  if (!thissop) return getGoalfeedbackattrib();
4224  OP_Utils::evalOpParm(result, thissop, "goalfeedbackattrib", cookparms.getCookTime(), 0);
4225  return result;
4226  }
4227  const UT_StringHolder & getGoalfeedbacktexture() const { return myGoalfeedbacktexture; }
4228  void setGoalfeedbacktexture(const UT_StringHolder & val) { myGoalfeedbacktexture = val; }
4230  {
4231  SOP_Node *thissop = cookparms.getNode();
4232  if (!thissop) return getGoalfeedbacktexture();
4234  OP_Utils::evalOpParm(result, thissop, "goalfeedbacktexture", cookparms.getCookTime(), 0);
4235  return result;
4236  }
4237  const UT_StringHolder & getGoalfeedbacktextureprim() const { return myGoalfeedbacktextureprim; }
4238  void setGoalfeedbacktextureprim(const UT_StringHolder & val) { myGoalfeedbacktextureprim = val; }
4240  {
4241  SOP_Node *thissop = cookparms.getNode();
4242  if (!thissop) return getGoalfeedbacktextureprim();
4244  OP_Utils::evalOpParm(result, thissop, "goalfeedbacktextureprim", cookparms.getCookTime(), 0);
4245  return result;
4246  }
4247  fpreal64 getTightnessreduction() const { return myTightnessreduction; }
4248  void setTightnessreduction(fpreal64 val) { myTightnessreduction = val; }
4250  {
4251  SOP_Node *thissop = cookparms.getNode();
4252  if (!thissop) return getTightnessreduction();
4253  fpreal64 result;
4254  OP_Utils::evalOpParm(result, thissop, "tightnessreduction", cookparms.getCookTime(), 0);
4255  return result;
4256  }
4258  void setTightnessreductionoverride(Tightnessreductionoverride val) { myTightnessreductionoverride = int64(val); }
4260  {
4261  SOP_Node *thissop = cookparms.getNode();
4262  if (!thissop) return getTightnessreductionoverride();
4263  int64 result;
4264  OP_Utils::evalOpParm(result, thissop, "tightnessreductionoverride", cookparms.getCookTime(), 0);
4265  return Tightnessreductionoverride(result);
4266  }
4267  int64 getTightnessreductionoptions() const { return myTightnessreductionoptions; }
4268  void setTightnessreductionoptions(int64 val) { myTightnessreductionoptions = val; }
4270  {
4271  SOP_Node *thissop = cookparms.getNode();
4272  if (!thissop) return getTightnessreductionoptions();
4273  int64 result;
4274  OP_Utils::evalOpParm(result, thissop, "tightnessreductionoptions", cookparms.getCookTime(), 0);
4275  return result;
4276  }
4277  UT_Vector2D getTightnessreductioninrange() const { return myTightnessreductioninrange; }
4278  void setTightnessreductioninrange(UT_Vector2D val) { myTightnessreductioninrange = val; }
4280  {
4281  SOP_Node *thissop = cookparms.getNode();
4282  if (!thissop) return getTightnessreductioninrange();
4284  OP_Utils::evalOpParm(result, thissop, "tightnessreductioninrange", cookparms.getCookTime(), 0);
4285  return result;
4286  }
4287  UT_Vector2D getTightnessreductionoutrange() const { return myTightnessreductionoutrange; }
4288  void setTightnessreductionoutrange(UT_Vector2D val) { myTightnessreductionoutrange = val; }
4290  {
4291  SOP_Node *thissop = cookparms.getNode();
4292  if (!thissop) return getTightnessreductionoutrange();
4294  OP_Utils::evalOpParm(result, thissop, "tightnessreductionoutrange", cookparms.getCookTime(), 0);
4295  return result;
4296  }
4297  UT_SharedPtr<UT_Ramp> getTightnessreductionremapramp() const { return myTightnessreductionremapramp; }
4298  void setTightnessreductionremapramp(UT_SharedPtr<UT_Ramp> val) { myTightnessreductionremapramp = val; }
4300  {
4301  SOP_Node *thissop = cookparms.getNode();
4302  if (!thissop) return getTightnessreductionremapramp();
4304  OP_Utils::evalOpParm(result, thissop, "tightnessreductionremapramp", cookparms.getCookTime(), 0);
4305  return result;
4306  }
4307  const UT_StringHolder & getTightnessreductioncurveattrib() const { return myTightnessreductioncurveattrib; }
4308  void setTightnessreductioncurveattrib(const UT_StringHolder & val) { myTightnessreductioncurveattrib = val; }
4310  {
4311  SOP_Node *thissop = cookparms.getNode();
4312  if (!thissop) return getTightnessreductioncurveattrib();
4314  OP_Utils::evalOpParm(result, thissop, "tightnessreductioncurveattrib", cookparms.getCookTime(), 0);
4315  return result;
4316  }
4317  const UT_StringHolder & getTightnessreductionattrib() const { return myTightnessreductionattrib; }
4318  void setTightnessreductionattrib(const UT_StringHolder & val) { myTightnessreductionattrib = val; }
4320  {
4321  SOP_Node *thissop = cookparms.getNode();
4322  if (!thissop) return getTightnessreductionattrib();
4324  OP_Utils::evalOpParm(result, thissop, "tightnessreductionattrib", cookparms.getCookTime(), 0);
4325  return result;
4326  }
4327  const UT_StringHolder & getTightnessreductiontexture() const { return myTightnessreductiontexture; }
4328  void setTightnessreductiontexture(const UT_StringHolder & val) { myTightnessreductiontexture = val; }
4330  {
4331  SOP_Node *thissop = cookparms.getNode();
4332  if (!thissop) return getTightnessreductiontexture();
4334  OP_Utils::evalOpParm(result, thissop, "tightnessreductiontexture", cookparms.getCookTime(), 0);
4335  return result;
4336  }
4337  const UT_StringHolder & getTightnessreductiontextureprim() const { return myTightnessreductiontextureprim; }
4338  void setTightnessreductiontextureprim(const UT_StringHolder & val) { myTightnessreductiontextureprim = val; }
4340  {
4341  SOP_Node *thissop = cookparms.getNode();
4342  if (!thissop) return getTightnessreductiontextureprim();
4344  OP_Utils::evalOpParm(result, thissop, "tightnessreductiontextureprim", cookparms.getCookTime(), 0);
4345  return result;
4346  }
4347  bool getEnablecurling() const { return myEnablecurling; }
4348  void setEnablecurling(bool val) { myEnablecurling = val; }
4349  bool opEnablecurling(const SOP_NodeVerb::CookParms &cookparms) const
4350  {
4351  SOP_Node *thissop = cookparms.getNode();
4352  if (!thissop) return getEnablecurling();
4353  bool result;
4354  OP_Utils::evalOpParm(result, thissop, "enablecurling", cookparms.getCookTime(), 0);
4355  return result;
4356  }
4357  fpreal64 getCurlamp() const { return myCurlamp; }
4358  void setCurlamp(fpreal64 val) { myCurlamp = val; }
4360  {
4361  SOP_Node *thissop = cookparms.getNode();
4362  if (!thissop) return getCurlamp();
4363  fpreal64 result;
4364  OP_Utils::evalOpParm(result, thissop, "curlamp", cookparms.getCookTime(), 0);
4365  return result;
4366  }
4367  Curlampoverride getCurlampoverride() const { return Curlampoverride(myCurlampoverride); }
4368  void setCurlampoverride(Curlampoverride val) { myCurlampoverride = int64(val); }
4370  {
4371  SOP_Node *thissop = cookparms.getNode();
4372  if (!thissop) return getCurlampoverride();
4373  int64 result;
4374  OP_Utils::evalOpParm(result, thissop, "curlampoverride", cookparms.getCookTime(), 0);
4375  return Curlampoverride(result);
4376  }
4377  int64 getCurlampoptions() const { return myCurlampoptions; }
4378  void setCurlampoptions(int64 val) { myCurlampoptions = val; }
4380  {
4381  SOP_Node *thissop = cookparms.getNode();
4382  if (!thissop) return getCurlampoptions();
4383  int64 result;
4384  OP_Utils::evalOpParm(result, thissop, "curlampoptions", cookparms.getCookTime(), 0);
4385  return result;
4386  }
4387  UT_Vector2D getCurlampinrange() const { return myCurlampinrange; }
4388  void setCurlampinrange(UT_Vector2D val) { myCurlampinrange = val; }
4390  {
4391  SOP_Node *thissop = cookparms.getNode();
4392  if (!thissop) return getCurlampinrange();
4394  OP_Utils::evalOpParm(result, thissop, "curlampinrange", cookparms.getCookTime(), 0);
4395  return result;
4396  }
4397  UT_Vector2D getCurlampoutrange() const { return myCurlampoutrange; }
4398  void setCurlampoutrange(UT_Vector2D val) { myCurlampoutrange = val; }
4400  {
4401  SOP_Node *thissop = cookparms.getNode();
4402  if (!thissop) return getCurlampoutrange();
4404  OP_Utils::evalOpParm(result, thissop, "curlampoutrange", cookparms.getCookTime(), 0);
4405  return result;
4406  }
4407  UT_SharedPtr<UT_Ramp> getCurlampremapramp() const { return myCurlampremapramp; }
4408  void setCurlampremapramp(UT_SharedPtr<UT_Ramp> val) { myCurlampremapramp = val; }
4410  {
4411  SOP_Node *thissop = cookparms.getNode();
4412  if (!thissop) return getCurlampremapramp();
4414  OP_Utils::evalOpParm(result, thissop, "curlampremapramp", cookparms.getCookTime(), 0);
4415  return result;
4416  }
4417  const UT_StringHolder & getCurlampcurveattrib() const { return myCurlampcurveattrib; }
4418  void setCurlampcurveattrib(const UT_StringHolder & val) { myCurlampcurveattrib = val; }
4420  {
4421  SOP_Node *thissop = cookparms.getNode();
4422  if (!thissop) return getCurlampcurveattrib();
4424  OP_Utils::evalOpParm(result, thissop, "curlampcurveattrib", cookparms.getCookTime(), 0);
4425  return result;
4426  }
4427  const UT_StringHolder & getCurlampattrib() const { return myCurlampattrib; }
4428  void setCurlampattrib(const UT_StringHolder & val) { myCurlampattrib = val; }
4430  {
4431  SOP_Node *thissop = cookparms.getNode();
4432  if (!thissop) return getCurlampattrib();
4434  OP_Utils::evalOpParm(result, thissop, "curlampattrib", cookparms.getCookTime(), 0);
4435  return result;
4436  }
4437  const UT_StringHolder & getCurlamptexture() const { return myCurlamptexture; }
4438  void setCurlamptexture(const UT_StringHolder & val) { myCurlamptexture = val; }
4440  {
4441  SOP_Node *thissop = cookparms.getNode();
4442  if (!thissop) return getCurlamptexture();
4444  OP_Utils::evalOpParm(result, thissop, "curlamptexture", cookparms.getCookTime(), 0);
4445  return result;
4446  }
4447  const UT_StringHolder & getCurlamptextureprim() const { return myCurlamptextureprim; }
4448  void setCurlamptextureprim(const UT_StringHolder & val) { myCurlamptextureprim = val; }
4450  {
4451  SOP_Node *thissop = cookparms.getNode();
4452  if (!thissop) return getCurlamptextureprim();
4454  OP_Utils::evalOpParm(result, thissop, "curlamptextureprim", cookparms.getCookTime(), 0);
4455  return result;
4456  }
4457  UT_SharedPtr<UT_Ramp> getCurlampramp() const { return myCurlampramp; }
4458  void setCurlampramp(UT_SharedPtr<UT_Ramp> val) { myCurlampramp = val; }
4460  {
4461  SOP_Node *thissop = cookparms.getNode();
4462  if (!thissop) return getCurlampramp();
4464  OP_Utils::evalOpParm(result, thissop, "curlampramp", cookparms.getCookTime(), 0);
4465  return result;
4466  }
4467  fpreal64 getCurlfreq() const { return myCurlfreq; }
4468  void setCurlfreq(fpreal64 val) { myCurlfreq = val; }
4470  {
4471  SOP_Node *thissop = cookparms.getNode();
4472  if (!thissop) return getCurlfreq();
4473  fpreal64 result;
4474  OP_Utils::evalOpParm(result, thissop, "curlfreq", cookparms.getCookTime(), 0);
4475  return result;
4476  }
4477  Curlfreqoverride getCurlfreqoverride() const { return Curlfreqoverride(myCurlfreqoverride); }
4478  void setCurlfreqoverride(Curlfreqoverride val) { myCurlfreqoverride = int64(val); }
4480  {
4481  SOP_Node *thissop = cookparms.getNode();
4482  if (!thissop) return getCurlfreqoverride();
4483  int64 result;
4484  OP_Utils::evalOpParm(result, thissop, "curlfreqoverride", cookparms.getCookTime(), 0);
4485  return Curlfreqoverride(result);
4486  }
4487  int64 getCurlfreqoptions() const { return myCurlfreqoptions; }
4488  void setCurlfreqoptions(int64 val) { myCurlfreqoptions = val; }
4490  {
4491  SOP_Node *thissop = cookparms.getNode();
4492  if (!thissop) return getCurlfreqoptions();
4493  int64 result;
4494  OP_Utils::evalOpParm(result, thissop, "curlfreqoptions", cookparms.getCookTime(), 0);
4495  return result;
4496  }
4497  UT_Vector2D getCurlfreqinrange() const { return myCurlfreqinrange; }
4498  void setCurlfreqinrange(UT_Vector2D val) { myCurlfreqinrange = val; }
4500  {
4501  SOP_Node *thissop = cookparms.getNode();
4502  if (!thissop) return getCurlfreqinrange();
4504  OP_Utils::evalOpParm(result, thissop, "curlfreqinrange", cookparms.getCookTime(), 0);
4505  return result;
4506  }
4507  UT_Vector2D getCurlfreqoutrange() const { return myCurlfreqoutrange; }
4508  void setCurlfreqoutrange(UT_Vector2D val) { myCurlfreqoutrange = val; }
4510  {
4511  SOP_Node *thissop = cookparms.getNode();
4512  if (!thissop) return getCurlfreqoutrange();
4514  OP_Utils::evalOpParm(result, thissop, "curlfreqoutrange", cookparms.getCookTime(), 0);
4515  return result;
4516  }
4517  UT_SharedPtr<UT_Ramp> getCurlfreqremapramp() const { return myCurlfreqremapramp; }
4518  void setCurlfreqremapramp(UT_SharedPtr<UT_Ramp> val) { myCurlfreqremapramp = val; }
4520  {
4521  SOP_Node *thissop = cookparms.getNode();
4522  if (!thissop) return getCurlfreqremapramp();
4524  OP_Utils::evalOpParm(result, thissop, "curlfreqremapramp", cookparms.getCookTime(), 0);
4525  return result;
4526  }
4527  const UT_StringHolder & getCurlfreqcurveattrib() const { return myCurlfreqcurveattrib; }
4528  void setCurlfreqcurveattrib(const UT_StringHolder & val) { myCurlfreqcurveattrib = val; }
4530  {
4531  SOP_Node *thissop = cookparms.getNode();
4532  if (!thissop) return getCurlfreqcurveattrib();
4534  OP_Utils::evalOpParm(result, thissop, "curlfreqcurveattrib", cookparms.getCookTime(), 0);
4535  return result;
4536  }
4537  const UT_StringHolder & getCurlfreqattrib() const { return myCurlfreqattrib; }
4538  void setCurlfreqattrib(const UT_StringHolder & val) { myCurlfreqattrib = val; }
4540  {
4541  SOP_Node *thissop = cookparms.getNode();
4542  if (!thissop) return getCurlfreqattrib();
4544  OP_Utils::evalOpParm(result, thissop, "curlfreqattrib", cookparms.getCookTime(), 0);
4545  return result;
4546  }
4547  const UT_StringHolder & getCurlfreqtexture() const { return myCurlfreqtexture; }
4548  void setCurlfreqtexture(const UT_StringHolder & val) { myCurlfreqtexture = val; }
4550  {
4551  SOP_Node *thissop = cookparms.getNode();
4552  if (!thissop) return getCurlfreqtexture();
4554  OP_Utils::evalOpParm(result, thissop, "curlfreqtexture", cookparms.getCookTime(), 0);
4555  return result;
4556  }
4557  const UT_StringHolder & getCurlfreqtextureprim() const { return myCurlfreqtextureprim; }
4558  void setCurlfreqtextureprim(const UT_StringHolder & val) { myCurlfreqtextureprim = val; }
4560  {
4561  SOP_Node *thissop = cookparms.getNode();
4562  if (!thissop) return getCurlfreqtextureprim();
4564  OP_Utils::evalOpParm(result, thissop, "curlfreqtextureprim", cookparms.getCookTime(), 0);
4565  return result;
4566  }
4567  UT_SharedPtr<UT_Ramp> getCurlfreqramp() const { return myCurlfreqramp; }
4568  void setCurlfreqramp(UT_SharedPtr<UT_Ramp> val) { myCurlfreqramp = val; }
4570  {
4571  SOP_Node *thissop = cookparms.getNode();
4572  if (!thissop) return getCurlfreqramp();
4574  OP_Utils::evalOpParm(result, thissop, "curlfreqramp", cookparms.getCookTime(), 0);
4575  return result;
4576  }
4577  const UT_StringHolder & getClumpidinputattrib() const { return myClumpidinputattrib; }
4578  void setClumpidinputattrib(const UT_StringHolder & val) { myClumpidinputattrib = val; }
4580  {
4581  SOP_Node *thissop = cookparms.getNode();
4582  if (!thissop) return getClumpidinputattrib();
4584  OP_Utils::evalOpParm(result, thissop, "clumpidinputattrib", cookparms.getCookTime(), 0);
4585  return result;
4586  }
4587  bool getCreateclumpidattrib() const { return myCreateclumpidattrib; }
4588  void setCreateclumpidattrib(bool val) { myCreateclumpidattrib = val; }
4589  bool opCreateclumpidattrib(const SOP_NodeVerb::CookParms &cookparms) const
4590  {
4591  SOP_Node *thissop = cookparms.getNode();
4592  if (!thissop) return getCreateclumpidattrib();
4593  bool result;
4594  OP_Utils::evalOpParm(result, thissop, "createclumpidattrib", cookparms.getCookTime(), 0);
4595  return result;
4596  }
4597  const UT_StringHolder & getClumpidoutputattrib() const { return myClumpidoutputattrib; }
4598  void setClumpidoutputattrib(const UT_StringHolder & val) { myClumpidoutputattrib = val; }
4600  {
4601  SOP_Node *thissop = cookparms.getNode();
4602  if (!thissop) return getClumpidoutputattrib();
4604  OP_Utils::evalOpParm(result, thissop, "clumpidoutputattrib", cookparms.getCookTime(), 0);
4605  return result;
4606  }
4607  bool getUseorientinputattrib() const { return myUseorientinputattrib; }
4608  void setUseorientinputattrib(bool val) { myUseorientinputattrib = val; }
4610  {
4611  SOP_Node *thissop = cookparms.getNode();
4612  if (!thissop) return getUseorientinputattrib();
4613  bool result;
4614  OP_Utils::evalOpParm(result, thissop, "useorientinputattrib", cookparms.getCookTime(), 0);
4615  return result;
4616  }
4617  const UT_StringHolder & getOrientinputattrib() const { return myOrientinputattrib; }
4618  void setOrientinputattrib(const UT_StringHolder & val) { myOrientinputattrib = val; }
4620  {
4621  SOP_Node *thissop = cookparms.getNode();
4622  if (!thissop) return getOrientinputattrib();
4624  OP_Utils::evalOpParm(result, thissop, "orientinputattrib", cookparms.getCookTime(), 0);
4625  return result;
4626  }
4627  bool getCreatetightnessattrib() const { return myCreatetightnessattrib; }
4628  void setCreatetightnessattrib(bool val) { myCreatetightnessattrib = val; }
4630  {
4631  SOP_Node *thissop = cookparms.getNode();
4632  if (!thissop) return getCreatetightnessattrib();
4633  bool result;
4634  OP_Utils::evalOpParm(result, thissop, "createtightnessattrib", cookparms.getCookTime(), 0);
4635  return result;
4636  }
4637  const UT_StringHolder & getTightnessoutputattrib() const { return myTightnessoutputattrib; }
4638  void setTightnessoutputattrib(const UT_StringHolder & val) { myTightnessoutputattrib = val; }
4640  {
4641  SOP_Node *thissop = cookparms.getNode();
4642  if (!thissop) return getTightnessoutputattrib();
4644  OP_Utils::evalOpParm(result, thissop, "tightnessoutputattrib", cookparms.getCookTime(), 0);
4645  return result;
4646  }
4647  const UT_StringHolder & getClumppointattribs() const { return myClumppointattribs; }
4648  void setClumppointattribs(const UT_StringHolder & val) { myClumppointattribs = val; }
4650  {
4651  SOP_Node *thissop = cookparms.getNode();
4652  if (!thissop) return getClumppointattribs();
4654  OP_Utils::evalOpParm(result, thissop, "clumppointattribs", cookparms.getCookTime(), 0);
4655  return result;
4656  }
4657  const UT_StringHolder & getClumpprimattribs() const { return myClumpprimattribs; }
4658  void setClumpprimattribs(const UT_StringHolder & val) { myClumpprimattribs = val; }
4660  {
4661  SOP_Node *thissop = cookparms.getNode();
4662  if (!thissop) return getClumpprimattribs();
4664  OP_Utils::evalOpParm(result, thissop, "clumpprimattribs", cookparms.getCookTime(), 0);
4665  return result;
4666  }
4667 
4668 private:
4669  bool myLegacymasking;
4670  UT_StringHolder myUvattrib;
4671  fpreal64 myBlend;
4672  int64 myBlendoverride;
4673  int64 myBlendoptions;
4674  UT_Vector2D myBlendinrange;
4675  UT_Vector2D myBlendoutrange;
4676  UT_SharedPtr<UT_Ramp> myBlendremapramp;
4677  UT_StringHolder myBlendcurveattrib;
4678  UT_StringHolder myBlendattrib;
4679  UT_StringHolder myBlendtexture;
4680  UT_StringHolder myBlendtextureprim;
4681  bool myUseskinmask;
4682  UT_StringHolder mySkinmaskattrib;
4683  fpreal64 myClumpsize;
4684  int64 myClumpsizeoverride;
4685  int64 myClumpsizeoptions;
4686  UT_Vector2D myClumpsizeinrange;
4687  UT_Vector2D myClumpsizeoutrange;
4688  UT_SharedPtr<UT_Ramp> myClumpsizeremapramp;
4689  UT_StringHolder myClumpsizeattrib;
4690  UT_StringHolder myClumpsizetexture;
4691  UT_StringHolder myClumpsizetextureprim;
4692  bool mySearchbeyondradius;
4693  bool myClumpwithinclumps;
4694  fpreal64 myCrossoverrate;
4695  fpreal64 mySeed;
4696  int64 myMethod;
4697  bool myPreservelength;
4698  fpreal64 myExtendtomatch;
4699  fpreal64 myShortentomatch;
4700  bool myAccuratebundling;
4701  fpreal64 myHairwidth;
4702  fpreal64 myHairwidthscale;
4703  fpreal64 myTightness;
4704  int64 myTightnessoverride;
4705  int64 myTightnessoptions;
4706  UT_Vector2D myTightnessinrange;
4707  UT_Vector2D myTightnessoutrange;
4708  UT_SharedPtr<UT_Ramp> myTightnessremapramp;
4709  UT_StringHolder myTightnesscurveattrib;
4710  UT_StringHolder myTightnessclumpattrib;
4711  UT_StringHolder myTightnessattrib;
4712  UT_StringHolder myTightnesstexture;
4713  UT_StringHolder myTightnesstextureprim;
4714  fpreal64 myStrayamount;
4715  int64 myStrayamountoverride;
4716  int64 myStrayamountoptions;
4717  UT_Vector2D myStrayamountinrange;
4718  UT_Vector2D myStrayamountoutrange;
4719  UT_SharedPtr<UT_Ramp> myStrayamountremapramp;
4720  UT_StringHolder myStrayamountcurveattrib;
4721  UT_StringHolder myStrayamountclumpattrib;
4722  UT_StringHolder myStrayamountattrib;
4723  UT_StringHolder myStrayamounttexture;
4724  UT_StringHolder myStrayamounttextureprim;
4725  fpreal64 myStrayrate;
4726  int64 myStrayrateoverride;
4727  int64 myStrayrateoptions;
4728  UT_Vector2D myStrayrateinrange;
4729  UT_Vector2D myStrayrateoutrange;
4730  UT_SharedPtr<UT_Ramp> myStrayrateremapramp;
4731  UT_StringHolder myStrayratecurveattrib;
4732  UT_StringHolder myStrayrateclumpattrib;
4733  UT_StringHolder myStrayrateattrib;
4734  UT_StringHolder myStrayratetexture;
4735  UT_StringHolder myStrayratetextureprim;
4736  fpreal64 myStrayfalloff;
4737  int64 myStrayfalloffoverride;
4738  int64 myStrayfalloffoptions;
4739  UT_Vector2D myStrayfalloffinrange;
4740  UT_Vector2D myStrayfalloffoutrange;
4741  UT_SharedPtr<UT_Ramp> myStrayfalloffremapramp;
4742  UT_StringHolder myStrayfalloffcurveattrib;
4743  UT_StringHolder myStrayfalloffclumpattrib;
4744  UT_StringHolder myStrayfalloffattrib;
4745  UT_StringHolder myStrayfallofftexture;
4746  UT_StringHolder myStrayfallofftextureprim;
4747  UT_SharedPtr<UT_Ramp> myClumpprofile;
4748  fpreal64 myIterations;
4749  int64 myIterationsoverride;
4750  int64 myIterationsoptions;
4751  UT_Vector2D myIterationsinrange;
4752  UT_Vector2D myIterationsoutrange;
4753  UT_SharedPtr<UT_Ramp> myIterationsremapramp;
4754  UT_StringHolder myIterationscurveattrib;
4755  UT_StringHolder myIterationsattrib;
4756  UT_StringHolder myIterationstexture;
4757  UT_StringHolder myIterationstextureprim;
4758  fpreal64 mySizereduction;
4759  int64 mySizereductionoverride;
4760  int64 mySizereductionoptions;
4761  UT_Vector2D mySizereductioninrange;
4762  UT_Vector2D mySizereductionoutrange;
4763  UT_SharedPtr<UT_Ramp> mySizereductionremapramp;
4764  UT_StringHolder mySizereductionattrib;
4765  UT_StringHolder mySizereductiontexture;
4766  UT_StringHolder mySizereductiontextureprim;
4767  fpreal64 myGoalfeedback;
4768  int64 myGoalfeedbackoverride;
4769  int64 myGoalfeedbackoptions;
4770  UT_Vector2D myGoalfeedbackinrange;
4771  UT_Vector2D myGoalfeedbackoutrange;
4772  UT_SharedPtr<UT_Ramp> myGoalfeedbackremapramp;
4773  UT_StringHolder myGoalfeedbackattrib;
4774  UT_StringHolder myGoalfeedbacktexture;
4775  UT_StringHolder myGoalfeedbacktextureprim;
4776  fpreal64 myTightnessreduction;
4777  int64 myTightnessreductionoverride;
4778  int64 myTightnessreductionoptions;
4779  UT_Vector2D myTightnessreductioninrange;
4780  UT_Vector2D myTightnessreductionoutrange;
4781  UT_SharedPtr<UT_Ramp> myTightnessreductionremapramp;
4782  UT_StringHolder myTightnessreductioncurveattrib;
4783  UT_StringHolder myTightnessreductionattrib;
4784  UT_StringHolder myTightnessreductiontexture;
4785  UT_StringHolder myTightnessreductiontextureprim;
4786  bool myEnablecurling;
4787  fpreal64 myCurlamp;
4788  int64 myCurlampoverride;
4789  int64 myCurlampoptions;
4790  UT_Vector2D myCurlampinrange;
4791  UT_Vector2D myCurlampoutrange;
4792  UT_SharedPtr<UT_Ramp> myCurlampremapramp;
4793  UT_StringHolder myCurlampcurveattrib;
4794  UT_StringHolder myCurlampattrib;
4795  UT_StringHolder myCurlamptexture;
4796  UT_StringHolder myCurlamptextureprim;
4797  UT_SharedPtr<UT_Ramp> myCurlampramp;
4798  fpreal64 myCurlfreq;
4799  int64 myCurlfreqoverride;
4800  int64 myCurlfreqoptions;
4801  UT_Vector2D myCurlfreqinrange;
4802  UT_Vector2D myCurlfreqoutrange;
4803  UT_SharedPtr<UT_Ramp> myCurlfreqremapramp;
4804  UT_StringHolder myCurlfreqcurveattrib;
4805  UT_StringHolder myCurlfreqattrib;
4806  UT_StringHolder myCurlfreqtexture;
4807  UT_StringHolder myCurlfreqtextureprim;
4808  UT_SharedPtr<UT_Ramp> myCurlfreqramp;
4809  UT_StringHolder myClumpidinputattrib;
4810  bool myCreateclumpidattrib;
4811  UT_StringHolder myClumpidoutputattrib;
4812  bool myUseorientinputattrib;
4813  UT_StringHolder myOrientinputattrib;
4814  bool myCreatetightnessattrib;
4815  UT_StringHolder myTightnessoutputattrib;
4816  UT_StringHolder myClumppointattribs;
4817  UT_StringHolder myClumpprimattribs;
4818 
4819 };
int64 getStrayrateoptions() const
fpreal64 getExtendtomatch() const
const UT_StringHolder & getGoalfeedbacktexture() const
static void saveData(std::ostream &os, UT_Matrix3D v)
UT_StringHolder opCurlfreqtexture(const SOP_NodeVerb::CookParms &cookparms) const
void setTightnessreductiontexture(const UT_StringHolder &val)
type
Definition: core.h:556
bool opCreatetightnessattrib(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getStrayamounttexture() const
void setBlendoverride(Blendoverride val)
Tightnessreductionoverride opTightnessreductionoverride(const SOP_NodeVerb::CookParms &cookparms) const
ParmType getNestParmType(TempIndex fieldnum) const override
fpreal64 opSizereduction(const SOP_NodeVerb::CookParms &cookparms) const
UT_SharedPtr< UT_Ramp > opBlendremapramp(const SOP_NodeVerb::CookParms &cookparms) const
void setTightnessclumpattrib(const UT_StringHolder &val)
fpreal64 getCurlamp() const
fpreal64 getGoalfeedback() const
fpreal64 opStrayrate(const SOP_NodeVerb::CookParms &cookparms) const
void setClumppointattribs(const UT_StringHolder &val)
void setHairwidthscale(fpreal64 val)
void setShortentomatch(fpreal64 val)
fpreal64 getHairwidth() const
void setOrientinputattrib(const UT_StringHolder &val)
fpreal64 getBlend() const
bool getUseskinmask() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
UT_StringHolder opIterationstextureprim(const SOP_NodeVerb::CookParms &cookparms) const
int64 getGoalfeedbackoptions() const
const UT_StringHolder & getStrayratetextureprim() const
void setSearchbeyondradius(bool val)
void setSizereductionattrib(const UT_StringHolder &val)
Tightnessoverride opTightnessoverride(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D opGoalfeedbackinrange(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D getSizereductioninrange() const
UT_StringHolder opIterationstexture(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opSkinmaskattrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D opTightnessreductioninrange(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getStrayfalloffclumpattrib() const
UT_StringHolder opTightnessreductioncurveattrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D getBlendoutrange() const
void setStrayamountinrange(UT_Vector2D val)
fpreal64 opIterations(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
const UT_StringHolder & getClumpidoutputattrib() const
int64 opBlendoptions(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opCurlfreqattrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D getCurlfreqinrange() const
UT_StringHolder opIterationscurveattrib(const SOP_NodeVerb::CookParms &cookparms) const
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
const char * getNestParmName(TempIndex fieldnum) const override
UT_Vector2D opStrayfalloffoutrange(const SOP_NodeVerb::CookParms &cookparms) const
void setTightnesstexture(const UT_StringHolder &val)
UT_StringHolder opClumpidinputattrib(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getIterationsattrib() const
void setStrayamountoptions(int64 val)
static void loadData(UT_IStream &is, UT_Matrix2D &v)
void setClumpidinputattrib(const UT_StringHolder &val)
UT_StringHolder opTightnesstexture(const SOP_NodeVerb::CookParms &cookparms) const
void setStrayfalloffattrib(const UT_StringHolder &val)
UT_Vector2D opIterationsinrange(const SOP_NodeVerb::CookParms &cookparms) const
static UT_SharedPtr< UT_Ramp > buildFromDefault(const char *def)
Returns a ramp constructed from the canonical default strings.
UT_StringHolder opSizereductiontextureprim(const SOP_NodeVerb::CookParms &cookparms) const
void setTightnessreductionremapramp(UT_SharedPtr< UT_Ramp > val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
void setClumpidoutputattrib(const UT_StringHolder &val)
UT_StringHolder opUvattrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D opCurlfreqoutrange(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void setStrayrateoutrange(UT_Vector2D val)
UT_Vector2D opBlendinrange(const SOP_NodeVerb::CookParms &cookparms) const
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void setBlendtexture(const UT_StringHolder &val)
UT_Vector2D getIterationsinrange() const
int64 opIterationsoptions(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opCurlfreqtextureprim(const SOP_NodeVerb::CookParms &cookparms) const
void setCurlfreq(fpreal64 val)
const UT_StringHolder & getCurlfreqtexture() const
void setSizereductioninrange(UT_Vector2D val)
exint bread(int32 *buffer, exint asize=1)
GLboolean * data
Definition: glcorearb.h:131
const UT_StringHolder & getStrayratecurveattrib() const
void setSizereductiontexture(const UT_StringHolder &val)
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:493
UT_StringHolder opClumpprimattribs(const SOP_NodeVerb::CookParms &cookparms) const
const GLdouble * v
Definition: glcorearb.h:837
const UT_StringHolder & getCurlfreqcurveattrib() const
UT_Vector2D getClumpsizeoutrange() const
fpreal getTime() const
Definition: OP_Context.h:63
UT_Vector2D opTightnessoutrange(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2T< fpreal64 > UT_Vector2D
void setIterationstexture(const UT_StringHolder &val)
const UT_StringHolder & getBlendattrib() const
const UT_StringHolder & getCurlamptexture() const
const UT_StringHolder & getTightnessattrib() const
UT_SharedPtr< UT_Ramp > opCurlfreqremapramp(const SOP_NodeVerb::CookParms &cookparms) const
GLsizei const GLfloat * value
Definition: glcorearb.h:824
const UT_StringHolder & getTightnessclumpattrib() const
void setIterationsinrange(UT_Vector2D val)
void setCurlampattrib(const UT_StringHolder &val)
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
UT_StringHolder opStrayamountcurveattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setStrayfalloffoverride(Strayfalloffoverride val)
const UT_StringHolder & getStrayfalloffattrib() const
UT_Vector2D getGoalfeedbackinrange() const
const OP_Context & context() const
Definition: OP_NodeParms.h:97
UT_StringHolder opStrayratetexture(const SOP_NodeVerb::CookParms &cookparms) const
void setSizereduction(fpreal64 val)
UT_Vector2D getIterationsoutrange() const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
void setCurlampremapramp(UT_SharedPtr< UT_Ramp > val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
SYS_FORCE_INLINE const char * buffer() const
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
void setTightnessattrib(const UT_StringHolder &val)
void setTightnessinrange(UT_Vector2D val)
const UT_StringHolder & getClumpprimattribs() const
GLdouble s
Definition: glad.h:3009
void setIterationsoverride(Iterationsoverride val)
bool getPreservelength() const
void setSizereductionremapramp(UT_SharedPtr< UT_Ramp > val)
UT_StringHolder opOrientinputattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setGoalfeedbacktextureprim(const UT_StringHolder &val)
UT_SharedPtr< UT_Ramp > getGoalfeedbackremapramp() const
const UT_StringHolder & getSizereductiontexture() const
void setIterationsoptions(int64 val)
static void saveData(std::ostream &os, bool v)
UT_StringHolder opGoalfeedbacktextureprim(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
An output stream object that owns its own string buffer storage.
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
void setSizereductionoverride(Sizereductionoverride val)
Curlfreqoverride getCurlfreqoverride() const
const UT_StringHolder & getTightnesscurveattrib() const
fpreal64 getStrayfalloff() const
void setCurlfreqramp(UT_SharedPtr< UT_Ramp > val)
UT_Vector2D getCurlampinrange() const
fpreal64 opStrayamount(const SOP_NodeVerb::CookParms &cookparms) const
Tightnessoverride getTightnessoverride() const
Blendoverride opBlendoverride(const SOP_NodeVerb::CookParms &cookparms) const
void setStrayfalloffcurveattrib(const UT_StringHolder &val)
static void saveData(std::ostream &os, UT_Vector3D v)
Iterationsoverride getIterationsoverride() const
UT_StringHolder opClumppointattribs(const SOP_NodeVerb::CookParms &cookparms) const
**But if you need a result
Definition: thread.h:622
const UT_StringHolder & getClumpidinputattrib() const
void setCurlampoverride(Curlampoverride val)
UT_StringHolder opClumpidoutputattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setCurlamp(fpreal64 val)
UT_StringHolder opStrayfalloffclumpattrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, int64 &v)
int64 opStrayfalloffoptions(const SOP_NodeVerb::CookParms &cookparms) const
void setAccuratebundling(bool val)
const UT_StringHolder & getStrayamounttextureprim() const
void setBlendoutrange(UT_Vector2D val)
fpreal64 getClumpsize() const
UT_SharedPtr< UT_Ramp > getClumpprofile() const
int64 getStrayamountoptions() const
UT_SharedPtr< UT_Ramp > opCurlampramp(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D getClumpsizeinrange() const
Clumpsizeoverride opClumpsizeoverride(const SOP_NodeVerb::CookParms &cookparms) const
Goalfeedbackoverride getGoalfeedbackoverride() const
int64 opStrayamountoptions(const SOP_NodeVerb::CookParms &cookparms) const
int64 getClumpsizeoptions() const
void setStrayamount(fpreal64 val)
exint nodeIdx() const
Definition: OP_NodeParms.h:95
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
UT_StringHolder opStrayfalloffcurveattrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opStrayfalloffattrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector3D &v)
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
void setIterationstextureprim(const UT_StringHolder &val)
const UT_StringHolder & getTightnesstexture() const
void setClumpprimattribs(const UT_StringHolder &val)
fpreal64 opHairwidthscale(const SOP_NodeVerb::CookParms &cookparms) const
void setStrayamountoverride(Strayamountoverride val)
fpreal64 getCrossoverrate() const
UT_SharedPtr< UT_Ramp > opCurlampremapramp(const SOP_NodeVerb::CookParms &cookparms) const
void setCrossoverrate(fpreal64 val)
void setBlend(fpreal64 val)
void setCurlampoutrange(UT_Vector2D val)
void setUseskinmask(bool val)
int64 opTightnessoptions(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
void setStrayamountclumpattrib(const UT_StringHolder &val)
UT_StringHolder opTightnessoutputattrib(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
int64 opStrayrateoptions(const SOP_NodeVerb::CookParms &cookparms) const
UT_SharedPtr< UT_Ramp > getCurlfreqramp() const
void setCurlfreqoutrange(UT_Vector2D val)
void setStrayamounttextureprim(const UT_StringHolder &val)
Method opMethod(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4D &v)
static void loadData(UT_IStream &is, UT_Vector3I &v)
const UT_StringHolder & getBlendtexture() const
void setClumpsizeoutrange(UT_Vector2D val)
const UT_StringHolder & getCurlampcurveattrib() const
double fpreal64
Definition: SYS_Types.h:201
void setGoalfeedbackoutrange(UT_Vector2D val)
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: APEX_Include.h:55
fpreal64 getStrayrate() const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
Blendoverride getBlendoverride() const
UT_SharedPtr< UT_Ramp > getCurlampremapramp() const
UT_SharedPtr< UT_Ramp > opStrayrateremapramp(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
const UT_StringHolder & getUvattrib() const
static void saveData(std::ostream &os, UT_StringHolder s)
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
bool getEnablecurling() const
fpreal64 opCurlamp(const SOP_NodeVerb::CookParms &cookparms) const
UT_SharedPtr< UT_Ramp > getStrayamountremapramp() const
bool opUseorientinputattrib(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getCurlamptextureprim() const
const UT_StringHolder & getTightnessreductiontextureprim() const
UT_Vector2D getCurlfreqoutrange() const
UT_StringHolder opStrayrateclumpattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setBlendremapramp(UT_SharedPtr< UT_Ramp > val)
bool load(UT_IStream &is)
UT_StringHolder opStrayrateattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setTightnesscurveattrib(const UT_StringHolder &val)
bool getLegacymasking() const
static void saveData(std::ostream &os, UT_Matrix4D v)
fpreal64 opStrayfalloff(const SOP_NodeVerb::CookParms &cookparms) const
void setSizereductiontextureprim(const UT_StringHolder &val)
void setBlendinrange(UT_Vector2D val)
Strayfalloffoverride opStrayfalloffoverride(const SOP_NodeVerb::CookParms &cookparms) const
void setGoalfeedback(fpreal64 val)
Sizereductionoverride getSizereductionoverride() const
void setCurlfreqattrib(const UT_StringHolder &val)
UT_Vector2D opCurlampinrange(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getSkinmaskattrib() const
int64 getBlendoptions() const
void setStrayrateoverride(Strayrateoverride val)
UT_Vector2D opCurlampoutrange(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D opStrayamountinrange(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getTightnessreductioncurveattrib() const
bool opLegacymasking(const SOP_NodeVerb::CookParms &cookparms) const
void setCurlfreqoptions(int64 val)
int64 getStrayfalloffoptions() const
bool opUseskinmask(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D getStrayrateoutrange() const
const UT_StringHolder & getIterationscurveattrib() const
UT_StringHolder opGoalfeedbackattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setLegacymasking(bool val)
exint length() const
void setMethod(Method val)
UT_Vector2D opSizereductionoutrange(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getTightnessreduction() const
void setClumpsizeoptions(int64 val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
UT_Vector2D opTightnessreductionoutrange(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE const char * buffer() const
void setStrayratetexture(const UT_StringHolder &val)
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
UT_SharedPtr< UT_Ramp > opStrayfalloffremapramp(const SOP_NodeVerb::CookParms &cookparms) const
void setCreateclumpidattrib(bool val)
static void saveData(std::ostream &os, UT_Matrix2D v)
const UT_StringHolder & getStrayamountclumpattrib() const
UT_StringHolder opTightnessattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setSizereductionoutrange(UT_Vector2D val)
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
void setBlendoptions(int64 val)
Strayfalloffoverride getStrayfalloffoverride() const
fpreal64 opExtendtomatch(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
int64 opCurlampoptions(const SOP_NodeVerb::CookParms &cookparms) const
int64 getIterationsoptions() const
UT_StringHolder opStrayamounttexture(const SOP_NodeVerb::CookParms &cookparms) const
int64 getCurlfreqoptions() const
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
bool getAccuratebundling() const
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
UT_StringHolder opClumpsizetexture(const SOP_NodeVerb::CookParms &cookparms) const
void setStrayamounttexture(const UT_StringHolder &val)
const UT_StringHolder & getTightnessreductionattrib() const
Goalfeedbackoverride opGoalfeedbackoverride(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getOrientinputattrib() const
const UT_StringHolder & getBlendtextureprim() const
void setIterations(fpreal64 val)
void setGoalfeedbackinrange(UT_Vector2D val)
UT_StringHolder opGoalfeedbacktexture(const SOP_NodeVerb::CookParms &cookparms) const
Strayrateoverride opStrayrateoverride(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D getCurlampoutrange() const
UT_Vector2D opSizereductioninrange(const SOP_NodeVerb::CookParms &cookparms) const
void setStrayratetextureprim(const UT_StringHolder &val)
UT_StringHolder opTightnessreductionattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setTightnessoutrange(UT_Vector2D val)
const UT_StringHolder & getStrayfallofftexture() const
void setTightnessreduction(fpreal64 val)
int64 opTightnessreductionoptions(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
fpreal64 opBlend(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D opTightnessinrange(const SOP_NodeVerb::CookParms &cookparms) const
long long int64
Definition: SYS_Types.h:116
const UT_StringHolder & getIterationstexture() const
UT_StringHolder opTightnesstextureprim(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE UT_StringHolder getToken(Blendoverride enum_value)
void setIterationsoutrange(UT_Vector2D val)
const UT_StringHolder & getStrayfallofftextureprim() const
void setCurlfreqremapramp(UT_SharedPtr< UT_Ramp > val)
const UT_StringHolder & getClumpsizetextureprim() const
const UT_StringHolder & getClumpsizetexture() const
void setClumpsizeinrange(UT_Vector2D val)
bool opAccuratebundling(const SOP_NodeVerb::CookParms &cookparms) const
void setClumpsizetextureprim(const UT_StringHolder &val)
bool opPreservelength(const SOP_NodeVerb::CookParms &cookparms) const
void setIterationsremapramp(UT_SharedPtr< UT_Ramp > val)
Clumpsizeoverride getClumpsizeoverride() const
const UT_StringHolder & getCurlfreqattrib() const
void setStrayfalloffoptions(int64 val)
UT_Vector2D getTightnessoutrange() const
UT_StringHolder opIterationsattrib(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getCurlampattrib() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
UT_StringHolder opStrayratetextureprim(const SOP_NodeVerb::CookParms &cookparms) const
void setStrayamountremapramp(UT_SharedPtr< UT_Ramp > val)
int64 getTightnessreductionoptions() const
const UT_StringHolder & getStrayrateattrib() const
void setGoalfeedbackoptions(int64 val)
void setCurlampinrange(UT_Vector2D val)
Curlampoverride getCurlampoverride() const
int64 getCurlampoptions() const
void setGoalfeedbackattrib(const UT_StringHolder &val)
void copyFrom(const OP_NodeParms *src) override
UT_StringHolder opStrayfallofftexture(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D opStrayamountoutrange(const SOP_NodeVerb::CookParms &cookparms) const
void setCurlfreqtexture(const UT_StringHolder &val)
void setTightness(fpreal64 val)
UT_StringHolder opSizereductionattrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opTightnesscurveattrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix3D &v)
UT_Vector2D getStrayfalloffinrange() const
bool opClumpwithinclumps(const SOP_NodeVerb::CookParms &cookparms) const
void setTightnessreductiontextureprim(const UT_StringHolder &val)
Curlampoverride opCurlampoverride(const SOP_NodeVerb::CookParms &cookparms) const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
UT_StringHolder opSizereductiontexture(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getTightnessreductiontexture() const
void setClumpsizeattrib(const UT_StringHolder &val)
UT_SharedPtr< UT_Ramp > opClumpprofile(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
bool getUseorientinputattrib() const
UT_StringHolder opCurlampattrib(const SOP_NodeVerb::CookParms &cookparms) const
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:303
static void loadData(UT_IStream &is, UT_StringHolder &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
fpreal64 getShortentomatch() const
UT_Vector2D getGoalfeedbackoutrange() const
void setBlendattrib(const UT_StringHolder &val)
void setStrayfalloffoutrange(UT_Vector2D val)
void setStrayrateremapramp(UT_SharedPtr< UT_Ramp > val)
void setExtendtomatch(fpreal64 val)
GT_API const UT_StringHolder version
const UT_StringHolder & getGoalfeedbackattrib() const
void setStrayfalloff(fpreal64 val)
void setCurlfreqinrange(UT_Vector2D val)
void setCurlampoptions(int64 val)
const UT_StringHolder & getSizereductiontextureprim() const
Strayamountoverride getStrayamountoverride() const
const UT_StringHolder & getStrayamountattrib() const
UT_Vector2D getStrayfalloffoutrange() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
void setPreservelength(bool val)
UT_Vector2D getStrayrateinrange() const
Tightnessreductionoverride getTightnessreductionoverride() const
const UT_StringHolder & getStrayamountcurveattrib() const
void setEnablecurling(bool val)
UT_Vector2D opStrayrateoutrange(const SOP_NodeVerb::CookParms &cookparms) const
void setHairwidth(fpreal64 val)
fpreal64 getCurlfreq() const
UT_StringHolder opCurlamptextureprim(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opCurlamptexture(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, bool &v)
const UT_StringHolder & getGoalfeedbacktextureprim() const
UT_StringHolder opCurlampcurveattrib(const SOP_NodeVerb::CookParms &cookparms) const
bool isParmColorRamp(exint idx) const override
UT_SharedPtr< UT_Ramp > opGoalfeedbackremapramp(const SOP_NodeVerb::CookParms &cookparms) const
UT_SharedPtr< UT_Ramp > getCurlfreqremapramp() const
static void loadData(UT_IStream &is, UT_Vector2D &v)
int64 opClumpsizeoptions(const SOP_NodeVerb::CookParms &cookparms) const
void setStrayratecurveattrib(const UT_StringHolder &val)
void setTightnessremapramp(UT_SharedPtr< UT_Ramp > val)
UT_StringHolder opTightnessreductiontextureprim(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
UT_SharedPtr< UT_Ramp > opClumpsizeremapramp(const SOP_NodeVerb::CookParms &cookparms) const
void setSeed(fpreal64 val)
exint getNestNumParms(TempIndex idx) const override
Curlfreqoverride opCurlfreqoverride(const SOP_NodeVerb::CookParms &cookparms) const
void setStrayrateoptions(int64 val)
fpreal64 opHairwidth(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getStrayrateclumpattrib() const
fpreal64 opGoalfeedback(const SOP_NodeVerb::CookParms &cookparms) const
int64 getSizereductionoptions() const
fpreal64 fpreal
Definition: SYS_Types.h:278
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
void setClumpwithinclumps(bool val)
void setCurlamptextureprim(const UT_StringHolder &val)
const UT_StringHolder & getStrayratetexture() const
bool operator!=(const SOP_HairClumpParms &src) const
Strayamountoverride opStrayamountoverride(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opTightnessreduction(const SOP_NodeVerb::CookParms &cookparms) const
LeafData & operator=(const LeafData &)=delete
Utility class for containing a color ramp.
Definition: UT_Ramp.h:96
const UT_StringHolder & getIterationstextureprim() const
UT_StringHolder opTightnessclumpattrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opBlendtextureprim(const SOP_NodeVerb::CookParms &cookparms) const
void setTightnessreductionoverride(Tightnessreductionoverride val)
fpreal64 opSeed(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getIterations() const
static void loadData(UT_IStream &is, UT_Matrix4D &v)
UT_SharedPtr< UT_Ramp > getSizereductionremapramp() const
static void saveData(std::ostream &os, UT_Vector2D v)
UT_SharedPtr< UT_Ramp > opTightnessreductionremapramp(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, fpreal64 &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
UT_Vector2D getBlendinrange() const
static void saveData(std::ostream &os, UT_Vector4D v)
void save(std::ostream &os) const
void setTightnessreductionattrib(const UT_StringHolder &val)
void setBlendtextureprim(const UT_StringHolder &val)
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
fpreal64 getSeed() const
GLuint GLfloat * val
Definition: glcorearb.h:1608
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:294
void setSizereductionoptions(int64 val)
static void loadData(UT_IStream &is, UT_Vector4I &v)
UT_Vector2D opClumpsizeoutrange(const SOP_NodeVerb::CookParms &cookparms) const
Method getMethod() const
void setClumpprofile(UT_SharedPtr< UT_Ramp > val)
fpreal64 opCurlfreq(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opStrayamountattrib(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
UT_SharedPtr< UT_Ramp > getStrayfalloffremapramp() const
#define SOP_API
Definition: SOP_API.h:10
void setTightnessreductionoutrange(UT_Vector2D val)
UT_SharedPtr< UT_Ramp > getStrayrateremapramp() const
fpreal64 opShortentomatch(const SOP_NodeVerb::CookParms &cookparms) const
void setGoalfeedbacktexture(const UT_StringHolder &val)
UT_StringHolder opStrayamounttextureprim(const SOP_NodeVerb::CookParms &cookparms) const
void setCurlfreqcurveattrib(const UT_StringHolder &val)
UT_SharedPtr< UT_Ramp > opCurlfreqramp(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getClumppointattribs() const
UT_SharedPtr< UT_Ramp > opIterationsremapramp(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D opStrayfalloffinrange(const SOP_NodeVerb::CookParms &cookparms) const
int64 opGoalfeedbackoptions(const SOP_NodeVerb::CookParms &cookparms) const
UT_SharedPtr< UT_Ramp > getCurlampramp() const
static void saveData(std::ostream &os, int64 v)
const UT_StringHolder & getClumpsizeattrib() const
bool getCreateclumpidattrib() const
UT_StringHolder opTightnessreductiontexture(const SOP_NodeVerb::CookParms &cookparms) const
void setBlendcurveattrib(const UT_StringHolder &val)
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:372
UT_StringHolder opStrayratecurveattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setTightnessreductionoptions(int64 val)
static void saveData(std::ostream &os, fpreal64 v)
void setCurlampramp(UT_SharedPtr< UT_Ramp > val)
UT_SharedPtr< UT_Ramp > getTightnessreductionremapramp() const
void setSkinmaskattrib(const UT_StringHolder &val)
UT_StringHolder opStrayamountclumpattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setTightnessreductioninrange(UT_Vector2D val)
UT_SharedPtr< UT_Ramp > getIterationsremapramp() const
Sizereductionoverride opSizereductionoverride(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getStrayfalloffcurveattrib() const
Iterationsoverride opIterationsoverride(const SOP_NodeVerb::CookParms &cookparms) const
void setTightnesstextureprim(const UT_StringHolder &val)
UT_Vector2D opIterationsoutrange(const SOP_NodeVerb::CookParms &cookparms) const
const char * findChar(int c) const
Definition: UT_String.h:1401
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
bool getClumpwithinclumps() const
UT_SharedPtr< UT_Ramp > getTightnessremapramp() const
void setStrayrateinrange(UT_Vector2D val)
bool getSearchbeyondradius() const
void setIterationscurveattrib(const UT_StringHolder &val)
int64 getTightnessoptions() const
void setStrayrate(fpreal64 val)
void setStrayfalloffremapramp(UT_SharedPtr< UT_Ramp > val)
UT_Vector2D opClumpsizeinrange(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D getSizereductionoutrange() const
UT_Vector2D opGoalfeedbackoutrange(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opStrayfallofftextureprim(const SOP_NodeVerb::CookParms &cookparms) const
GLboolean r
Definition: glcorearb.h:1222
bool opEnablecurling(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
void setGoalfeedbackremapramp(UT_SharedPtr< UT_Ramp > val)
fpreal64 getStrayamount() const
void setClumpsize(fpreal64 val)
void setStrayrateclumpattrib(const UT_StringHolder &val)
fpreal64 getSizereduction() const
const UT_StringHolder & getCurlfreqtextureprim() const
void setTightnessoutputattrib(const UT_StringHolder &val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
UT_StringHolder opCurlfreqcurveattrib(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getSizereductionattrib() const
void setStrayamountoutrange(UT_Vector2D val)
fpreal64 opClumpsize(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getHairwidthscale() const
UT_Vector2D getTightnessreductioninrange() const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
static void loadData(UT_IStream &is, UT_Vector2I &v)
bool operator==(const SOP_HairClumpParms &src) const
const UT_StringHolder & getBlendcurveattrib() const
UT_StringHolder opBlendtexture(const SOP_NodeVerb::CookParms &cookparms) const
UT_SharedPtr< UT_Ramp > opSizereductionremapramp(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D opStrayrateinrange(const SOP_NodeVerb::CookParms &cookparms) const
void setTightnessoverride(Tightnessoverride val)
void setStrayfallofftexture(const UT_StringHolder &val)
int64 opCurlfreqoptions(const SOP_NodeVerb::CookParms &cookparms) const
void setCreatetightnessattrib(bool val)
UT_StringHolder opBlendcurveattrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_SharedPtr< UT_Ramp > getBlendremapramp() const
bool opCreateclumpidattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setCurlfreqoverride(Curlfreqoverride val)
UT_StringHolder opClumpsizetextureprim(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opBlendattrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_SharedPtr< UT_Ramp > opTightnessremapramp(const SOP_NodeVerb::CookParms &cookparms) const
UT_SharedPtr< UT_Ramp > getClumpsizeremapramp() const
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
fpreal64 opTightness(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D getStrayamountoutrange() const
void setCurlampcurveattrib(const UT_StringHolder &val)
void setUvattrib(const UT_StringHolder &val)
UT_Vector2D opBlendoutrange(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D getStrayamountinrange() const
fpreal64 getTightness() const
UT_Vector2D getTightnessreductionoutrange() const
bool getCreatetightnessattrib() const
void loadFromOpSubclass(const LoadParms &loadparms) override
UT_Vector2D getTightnessinrange() const
void setStrayfallofftextureprim(const UT_StringHolder &val)
void setStrayrateattrib(const UT_StringHolder &val)
void setStrayfalloffinrange(UT_Vector2D val)
void setStrayfalloffclumpattrib(const UT_StringHolder &val)
UT_StringHolder opClumpsizeattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setClumpsizeoverride(Clumpsizeoverride val)
void setIterationsattrib(const UT_StringHolder &val)
UT_Vector2D opCurlfreqinrange(const SOP_NodeVerb::CookParms &cookparms) const
bool opSearchbeyondradius(const SOP_NodeVerb::CookParms &cookparms) const
int64 opSizereductionoptions(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getTightnesstextureprim() const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
void setTightnessreductioncurveattrib(const UT_StringHolder &val)
void setUseorientinputattrib(bool val)
SYS_FORCE_INLINE bool isstring() const
fpreal64 opCrossoverrate(const SOP_NodeVerb::CookParms &cookparms) const
void setStrayamountcurveattrib(const UT_StringHolder &val)
void setClumpsizeremapramp(UT_SharedPtr< UT_Ramp > val)
void setClumpsizetexture(const UT_StringHolder &val)
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
Strayrateoverride getStrayrateoverride() const
void setGoalfeedbackoverride(Goalfeedbackoverride val)
static void saveData(std::ostream &os, PRM_DataItemHandle s)
const UT_StringHolder & getTightnessoutputattrib() const
void setCurlfreqtextureprim(const UT_StringHolder &val)
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
void setStrayamountattrib(const UT_StringHolder &val)
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
void setTightnessoptions(int64 val)
void setCurlamptexture(const UT_StringHolder &val)
UT_SharedPtr< UT_Ramp > opStrayamountremapramp(const SOP_NodeVerb::CookParms &cookparms) const