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