HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_HairGenCore.proto.h
Go to the documentation of this file.
1 /* Automagically Generated by generate_proto.py
2  * Do not Edit
3  */
4 #pragma once
5 
6 #include <SOP/SOP_API.h>
7 #include <SOP/SOP_NodeVerb.h>
8 #include <OP/OP_GraphProxy.h>
9 
10 #include <OP/OP_Utils.h>
11 #include <PRM/PRM_Parm.h>
12 #include <UT/UT_IStream.h>
13 #include <UT/UT_NTStreamUtil.h>
14 #include <UT/UT_Ramp.h>
15 #include <UT/UT_SharedPtr.h>
16 #include <UT/UT_StringHolder.h>
17 #include <UT/UT_StringStream.h>
18 #include <UT/UT_VectorTypes.h>
19 #include <UT/UT_EnvControl.h>
20 #include <SYS/SYS_Types.h>
21 
22 class DEP_MicroNode;
23 namespace SOP_HairGenCoreEnums
24 {
25  enum class Mode
26  {
27  SURFACE = 0,
28  POINTS
29  };
30 
32  getToken(Mode enum_value)
33  {
34  using namespace UT::Literal;
35  switch (enum_value) {
36  case Mode::SURFACE: return "surface"_sh;
37  case Mode::POINTS: return "points"_sh;
38  default: UT_ASSERT(false); return ""_sh;
39  }
40  }
41 
42  enum class Skinguidemode
43  {
44  MATCHBYGUIDEID = 0,
46  };
47 
49  getToken(Skinguidemode enum_value)
50  {
51  using namespace UT::Literal;
52  switch (enum_value) {
53  case Skinguidemode::MATCHBYGUIDEID: return "matchbyguideid"_sh;
54  case Skinguidemode::WEIGHTARRAYS: return "weightarrays"_sh;
55  default: UT_ASSERT(false); return ""_sh;
56  }
57  }
58 
59  enum class Guideblendmethod
60  {
61  LINEARBLEND = 0,
63  };
64 
67  {
68  using namespace UT::Literal;
69  switch (enum_value) {
70  case Guideblendmethod::LINEARBLEND: return "linearblend"_sh;
71  case Guideblendmethod::EXTRUDEBLEND: return "extrudeblend"_sh;
72  default: UT_ASSERT(false); return ""_sh;
73  }
74  }
75 
77  {
78  NONE = 0,
79  SKINATTRIB,
80  TEXTURE,
82  };
83 
86  {
87  using namespace UT::Literal;
88  switch (enum_value) {
89  case Influenceradiusoverride::NONE: return "none"_sh;
90  case Influenceradiusoverride::SKINATTRIB: return "skinattrib"_sh;
91  case Influenceradiusoverride::TEXTURE: return "texture"_sh;
92  case Influenceradiusoverride::TEXTUREPRIM: return "textureprim"_sh;
93  default: UT_ASSERT(false); return ""_sh;
94  }
95  }
96 
98  {
99  NONE = 0,
100  SKINATTRIB,
101  TEXTURE,
103  };
104 
107  {
108  using namespace UT::Literal;
109  switch (enum_value) {
110  case Influencedecayoverride::NONE: return "none"_sh;
111  case Influencedecayoverride::SKINATTRIB: return "skinattrib"_sh;
112  case Influencedecayoverride::TEXTURE: return "texture"_sh;
113  case Influencedecayoverride::TEXTUREPRIM: return "textureprim"_sh;
114  default: UT_ASSERT(false); return ""_sh;
115  }
116  }
117 
119  {
120  NONE = 0,
121  SKINATTRIB,
122  TEXTURE,
124  };
125 
128  {
129  using namespace UT::Literal;
130  switch (enum_value) {
131  case Maxguidecountoverride::NONE: return "none"_sh;
132  case Maxguidecountoverride::SKINATTRIB: return "skinattrib"_sh;
133  case Maxguidecountoverride::TEXTURE: return "texture"_sh;
134  case Maxguidecountoverride::TEXTUREPRIM: return "textureprim"_sh;
135  default: UT_ASSERT(false); return ""_sh;
136  }
137  }
138 
140  {
141  NONE = 0,
142  SKINATTRIB,
143  TEXTURE,
145  };
146 
149  {
150  using namespace UT::Literal;
151  switch (enum_value) {
152  case Maxguideangleoverride::NONE: return "none"_sh;
153  case Maxguideangleoverride::SKINATTRIB: return "skinattrib"_sh;
154  case Maxguideangleoverride::TEXTURE: return "texture"_sh;
155  case Maxguideangleoverride::TEXTUREPRIM: return "textureprim"_sh;
156  default: UT_ASSERT(false); return ""_sh;
157  }
158  }
159 
161  {
162  NONE = 0,
163  SKINATTRIB,
164  TEXTURE,
166  };
167 
170  {
171  using namespace UT::Literal;
172  switch (enum_value) {
173  case Clumpcrossoveroverride::NONE: return "none"_sh;
174  case Clumpcrossoveroverride::SKINATTRIB: return "skinattrib"_sh;
175  case Clumpcrossoveroverride::TEXTURE: return "texture"_sh;
176  case Clumpcrossoveroverride::TEXTUREPRIM: return "textureprim"_sh;
177  default: UT_ASSERT(false); return ""_sh;
178  }
179  }
180 
182  {
183  NONE = 0,
184  SKINATTRIB,
185  TEXTURE,
187  };
188 
191  {
192  using namespace UT::Literal;
193  switch (enum_value) {
194  case Unguidedlengthoverride::NONE: return "none"_sh;
195  case Unguidedlengthoverride::SKINATTRIB: return "skinattrib"_sh;
196  case Unguidedlengthoverride::TEXTURE: return "texture"_sh;
197  case Unguidedlengthoverride::TEXTUREPRIM: return "textureprim"_sh;
198  default: UT_ASSERT(false); return ""_sh;
199  }
200  }
201 
202  enum class Thicknessoverride
203  {
204  NONE = 0,
205  SKINATTRIB,
206  TEXTURE
207  };
208 
211  {
212  using namespace UT::Literal;
213  switch (enum_value) {
214  case Thicknessoverride::NONE: return "none"_sh;
215  case Thicknessoverride::SKINATTRIB: return "skinattrib"_sh;
216  case Thicknessoverride::TEXTURE: return "texture"_sh;
217  default: UT_ASSERT(false); return ""_sh;
218  }
219  }
220 
221 }
222 
223 
225 {
226 public:
227  static int version() { return 1; }
229  {
232 
233 
235  {
236  guideindexattrib = "guides"_UTsh;
237  guideweightattrib = "weights"_UTsh;
238 
239  }
240 
241  bool operator==(const WeightArrayPairs &src) const
242  {
243  if (guideindexattrib != src.guideindexattrib) return false;
244  if (guideweightattrib != src.guideweightattrib) return false;
245 
246  return true;
247  }
248  bool operator!=(const WeightArrayPairs &src) const
249  {
250  return !operator==(src);
251  }
252 
253  };
254 
256  {
258 
259  buf.strcat("[ ");
260  for (int i = 0; i < list.entries(); i++)
261  {
262  if (i)
263  buf.strcat(", ");
264  buf.strcat("( ");
265  buf.append("");
266  { UT_String tmp; tmp = UT_StringWrap(list(i).guideindexattrib).makeQuotedString('"'); buf.strcat(tmp); }
267  buf.append(", ");
268  { UT_String tmp; tmp = UT_StringWrap(list(i).guideweightattrib).makeQuotedString('"'); buf.strcat(tmp); }
269 
270  buf.strcat(" )");
271  }
272  buf.strcat(" ]");
273 
275  return result;
276  }
277 
279  {
280  myMode = 0;
281  myGroup = ""_UTsh;
282  myUvattrib = "uv"_UTsh;
283  myLimittobbox = false;
284  myBBoxSize = UT_Vector3D(1,1,1);
285  myBBoxCenter = UT_Vector3D(0,0,0);
286  myPrune = false;
287  myPruningratio = 0.9;
288  myPrunethicken = false;
289  myUseguides = true;
290  myUniformguidesegments = false;
291  mySkininterp = false;
292  myUseInterpMesh = false;
293  mySkininterpguidesattrib = "guides"_UTsh;
294  mySkininterpweightsattrib = "weights"_UTsh;
295  mySkinguidemode = 0;
296  myGuideblendmethod = 0;
297  myGuidegroup = ""_UTsh;
298  myInfluenceradius = 0.05;
299  myInfluenceradiusoverride = 0;
300  myInfluenceradiusoptions = 0;
301  myInfluenceradiusinrange = UT_Vector2D(0,1);
302  myInfluenceradiusoutrange = UT_Vector2D(0,1);
303  myInfluenceradiusattrib = "influenceradiusscale"_UTsh;
304  myInfluenceradiustexture = ""_UTsh;
305  myInfluenceradiustextureprim = "influenceradiusscale"_UTsh;
306  myInfluencedecay = 2;
307  myInfluencedecayoverride = 0;
308  myInfluencedecayoptions = 0;
309  myInfluencedecayinrange = UT_Vector2D(0,1);
310  myInfluencedecayoutrange = UT_Vector2D(0,1);
311  myInfluencedecayattrib = "influencedecayscale"_UTsh;
312  myInfluencedecaytexture = ""_UTsh;
313  myInfluencedecaytextureprim = "influencedecayscale"_UTsh;
314  myMaxguidecount = 10;
315  myMaxguidecountoverride = 0;
316  myMaxguidecountoptions = 0;
317  myMaxguidecountinrange = UT_Vector2D(0,1);
318  myMaxguidecountoutrange = UT_Vector2D(0,1);
319  myMaxguidecountattrib = "maxguidecountscale"_UTsh;
320  myMaxguidecounttexture = ""_UTsh;
321  myMaxguidecounttextureprim = "maxguidecountscale"_UTsh;
322  myMaxguideangle = 90;
323  myMaxguideangleoverride = 0;
324  myMaxguideangleoptions = 0;
325  myMaxguideangleinrange = UT_Vector2D(0,1);
326  myMaxguideangleoutrange = UT_Vector2D(0,1);
327  myMaxguideangleattrib = "maxguideanglescale"_UTsh;
328  myMaxguideangletexture = ""_UTsh;
329  myMaxguideangletextureprim = "maxguideanglescale"_UTsh;
330  myClumpcrossover = 0;
331  myClumpcrossoveroverride = 0;
332  myClumpcrossoveroptions = 0;
333  myClumpcrossoverinrange = UT_Vector2D(0,1);
334  myClumpcrossoveroutrange = UT_Vector2D(0,1);
335  myClumpcrossoverattrib = "clumpcrossoverscale"_UTsh;
336  myClumpcrossovertexture = ""_UTsh;
337  myClumpcrossovertextureprim = "clumpcrossoverscale"_UTsh;
338  myGrowunguided = true;
339  myUseinitdirattrib = true;
340  myInitdirattrib = "furdirection"_UTsh;
341  myUnguidedsegments = 8;
342  myUnguidedlength = 0.05;
343  myUnguidedlengthoverride = 0;
344  myUnguidedlengthoptions = 0;
345  myUnguidedlengthinrange = UT_Vector2D(0,1);
346  myUnguidedlengthoutrange = UT_Vector2D(0,1);
347  myUnguidedlengthattrib = "unguidedlengthscale"_UTsh;
348  myUnguidedlengthtexture = ""_UTsh;
349  myUnguidedlengthtextureprim = "unguidedlengthscale"_UTsh;
350  myUnguidedminlength = 1e-05;
351  myCreateweightattribs = false;
352  myCreaterestrootattrib = true;
353  myClumpidattrib = "clumpid"_UTsh;
354  myOutputthicknessattrib = true;
355  myThicknessattrib = "width"_UTsh;
356  myThickness = 0.001;
357  myThicknessoverride = 0;
358  myThicknessskinattrib = "thicknessscale"_UTsh;
359  myThicknesstexture = ""_UTsh;
360  myHairprofile = UT_Ramp::buildFromDefault("1pos ( 0.17753121256828308 ) 1value ( 1 ) 1interp ( bspline ) 2pos ( 0.85230350494384766 ) 2value ( 1 ) 2interp ( bspline ) 3pos ( 1 ) 3value ( 0 ) 3interp ( bspline )");
361  myPointattribs = ""_UTsh;
362  myVertattribs = ""_UTsh;
363  myPrimattribs = ""_UTsh;
364  myDetailattribs = ""_UTsh;
365  myGuidepointattribs = ""_UTsh;
366  myGuideprimattribs = ""_UTsh;
367  myWeightArrayPairs.setSize(0);
368 
369  }
370 
371  explicit SOP_HairGenCoreParms(const SOP_HairGenCoreParms &) = default;
373  SOP_HairGenCoreParms(SOP_HairGenCoreParms &&) noexcept = default;
374  SOP_HairGenCoreParms &operator=(SOP_HairGenCoreParms &&) noexcept = default;
375 
376  ~SOP_HairGenCoreParms() override {}
377 
379  {
380  if (myMode != src.myMode) return false;
381  if (myGroup != src.myGroup) return false;
382  if (myUvattrib != src.myUvattrib) return false;
383  if (myLimittobbox != src.myLimittobbox) return false;
384  if (myBBoxSize != src.myBBoxSize) return false;
385  if (myBBoxCenter != src.myBBoxCenter) return false;
386  if (myPrune != src.myPrune) return false;
387  if (myPruningratio != src.myPruningratio) return false;
388  if (myPrunethicken != src.myPrunethicken) return false;
389  if (myUseguides != src.myUseguides) return false;
390  if (myUniformguidesegments != src.myUniformguidesegments) return false;
391  if (mySkininterp != src.mySkininterp) return false;
392  if (myUseInterpMesh != src.myUseInterpMesh) return false;
393  if (mySkininterpguidesattrib != src.mySkininterpguidesattrib) return false;
394  if (mySkininterpweightsattrib != src.mySkininterpweightsattrib) return false;
395  if (mySkinguidemode != src.mySkinguidemode) return false;
396  if (myGuideblendmethod != src.myGuideblendmethod) return false;
397  if (myGuidegroup != src.myGuidegroup) return false;
398  if (myInfluenceradius != src.myInfluenceradius) return false;
399  if (myInfluenceradiusoverride != src.myInfluenceradiusoverride) return false;
400  if (myInfluenceradiusoptions != src.myInfluenceradiusoptions) return false;
401  if (myInfluenceradiusinrange != src.myInfluenceradiusinrange) return false;
402  if (myInfluenceradiusoutrange != src.myInfluenceradiusoutrange) return false;
403  if (myInfluenceradiusattrib != src.myInfluenceradiusattrib) return false;
404  if (myInfluenceradiustexture != src.myInfluenceradiustexture) return false;
405  if (myInfluenceradiustextureprim != src.myInfluenceradiustextureprim) return false;
406  if (myInfluencedecay != src.myInfluencedecay) return false;
407  if (myInfluencedecayoverride != src.myInfluencedecayoverride) return false;
408  if (myInfluencedecayoptions != src.myInfluencedecayoptions) return false;
409  if (myInfluencedecayinrange != src.myInfluencedecayinrange) return false;
410  if (myInfluencedecayoutrange != src.myInfluencedecayoutrange) return false;
411  if (myInfluencedecayattrib != src.myInfluencedecayattrib) return false;
412  if (myInfluencedecaytexture != src.myInfluencedecaytexture) return false;
413  if (myInfluencedecaytextureprim != src.myInfluencedecaytextureprim) return false;
414  if (myMaxguidecount != src.myMaxguidecount) return false;
415  if (myMaxguidecountoverride != src.myMaxguidecountoverride) return false;
416  if (myMaxguidecountoptions != src.myMaxguidecountoptions) return false;
417  if (myMaxguidecountinrange != src.myMaxguidecountinrange) return false;
418  if (myMaxguidecountoutrange != src.myMaxguidecountoutrange) return false;
419  if (myMaxguidecountattrib != src.myMaxguidecountattrib) return false;
420  if (myMaxguidecounttexture != src.myMaxguidecounttexture) return false;
421  if (myMaxguidecounttextureprim != src.myMaxguidecounttextureprim) return false;
422  if (myMaxguideangle != src.myMaxguideangle) return false;
423  if (myMaxguideangleoverride != src.myMaxguideangleoverride) return false;
424  if (myMaxguideangleoptions != src.myMaxguideangleoptions) return false;
425  if (myMaxguideangleinrange != src.myMaxguideangleinrange) return false;
426  if (myMaxguideangleoutrange != src.myMaxguideangleoutrange) return false;
427  if (myMaxguideangleattrib != src.myMaxguideangleattrib) return false;
428  if (myMaxguideangletexture != src.myMaxguideangletexture) return false;
429  if (myMaxguideangletextureprim != src.myMaxguideangletextureprim) return false;
430  if (myClumpcrossover != src.myClumpcrossover) return false;
431  if (myClumpcrossoveroverride != src.myClumpcrossoveroverride) return false;
432  if (myClumpcrossoveroptions != src.myClumpcrossoveroptions) return false;
433  if (myClumpcrossoverinrange != src.myClumpcrossoverinrange) return false;
434  if (myClumpcrossoveroutrange != src.myClumpcrossoveroutrange) return false;
435  if (myClumpcrossoverattrib != src.myClumpcrossoverattrib) return false;
436  if (myClumpcrossovertexture != src.myClumpcrossovertexture) return false;
437  if (myClumpcrossovertextureprim != src.myClumpcrossovertextureprim) return false;
438  if (myGrowunguided != src.myGrowunguided) return false;
439  if (myUseinitdirattrib != src.myUseinitdirattrib) return false;
440  if (myInitdirattrib != src.myInitdirattrib) return false;
441  if (myUnguidedsegments != src.myUnguidedsegments) return false;
442  if (myUnguidedlength != src.myUnguidedlength) return false;
443  if (myUnguidedlengthoverride != src.myUnguidedlengthoverride) return false;
444  if (myUnguidedlengthoptions != src.myUnguidedlengthoptions) return false;
445  if (myUnguidedlengthinrange != src.myUnguidedlengthinrange) return false;
446  if (myUnguidedlengthoutrange != src.myUnguidedlengthoutrange) return false;
447  if (myUnguidedlengthattrib != src.myUnguidedlengthattrib) return false;
448  if (myUnguidedlengthtexture != src.myUnguidedlengthtexture) return false;
449  if (myUnguidedlengthtextureprim != src.myUnguidedlengthtextureprim) return false;
450  if (myUnguidedminlength != src.myUnguidedminlength) return false;
451  if (myCreateweightattribs != src.myCreateweightattribs) return false;
452  if (myCreaterestrootattrib != src.myCreaterestrootattrib) return false;
453  if (myClumpidattrib != src.myClumpidattrib) return false;
454  if (myOutputthicknessattrib != src.myOutputthicknessattrib) return false;
455  if (myThicknessattrib != src.myThicknessattrib) return false;
456  if (myThickness != src.myThickness) return false;
457  if (myThicknessoverride != src.myThicknessoverride) return false;
458  if (myThicknessskinattrib != src.myThicknessskinattrib) return false;
459  if (myThicknesstexture != src.myThicknesstexture) return false;
460  if (myHairprofile != src.myHairprofile)
461  { if (!myHairprofile || !src.myHairprofile || !(*myHairprofile == *src.myHairprofile)) return false; }
462  if (myPointattribs != src.myPointattribs) return false;
463  if (myVertattribs != src.myVertattribs) return false;
464  if (myPrimattribs != src.myPrimattribs) return false;
465  if (myDetailattribs != src.myDetailattribs) return false;
466  if (myGuidepointattribs != src.myGuidepointattribs) return false;
467  if (myGuideprimattribs != src.myGuideprimattribs) return false;
468  if (myWeightArrayPairs != src.myWeightArrayPairs) return false;
469 
470 
471  if (baseGetSignature() != src.baseGetSignature()) return false;
472 
473  return true;
474  }
476  {
477  return !operator==(src);
478  }
489 
490 
491 
492  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
493  {
494  myMode = 0;
495  if (true)
496  graph->evalOpParm(myMode, nodeidx, "mode", time, graph->isDirect()?nullptr:depnode);
497  myGroup = ""_UTsh;
498  if (true)
499  graph->evalOpParm(myGroup, nodeidx, "group", time, graph->isDirect()?nullptr:depnode);
500  myUvattrib = "uv"_UTsh;
501  if (true)
502  graph->evalOpParm(myUvattrib, nodeidx, "uvattrib", time, graph->isDirect()?nullptr:depnode);
503  myLimittobbox = false;
504  if (true)
505  graph->evalOpParm(myLimittobbox, nodeidx, "limittobbox", time, graph->isDirect()?nullptr:depnode);
506  myBBoxSize = UT_Vector3D(1,1,1);
507  if (true && ( (true&&!(((getLimittobbox()==0)))) ) )
508  graph->evalOpParm(myBBoxSize, nodeidx, "bboxsize", time, graph->isDirect()?nullptr:depnode);
509  myBBoxCenter = UT_Vector3D(0,0,0);
510  if (true && ( (true&&!(((getLimittobbox()==0)))) ) )
511  graph->evalOpParm(myBBoxCenter, nodeidx, "bboxcenter", time, graph->isDirect()?nullptr:depnode);
512  myPrune = false;
513  if (true)
514  graph->evalOpParm(myPrune, nodeidx, "prune", time, graph->isDirect()?nullptr:depnode);
515  myPruningratio = 0.9;
516  if (true && ( (true&&!(((getPrune()==0)))) ) )
517  graph->evalOpParm(myPruningratio, nodeidx, "pruningratio", time, graph->isDirect()?nullptr:depnode);
518  myPrunethicken = false;
519  if (true && ( (true&&!(((getPrune()==0)))) ) )
520  graph->evalOpParm(myPrunethicken, nodeidx, "prunethicken", time, graph->isDirect()?nullptr:depnode);
521  myUseguides = true;
522  if (true)
523  graph->evalOpParm(myUseguides, nodeidx, "useguides", time, graph->isDirect()?nullptr:depnode);
524  myUniformguidesegments = false;
525  if (true && ( (true&&!(((getUseguides()==0)))) ) )
526  graph->evalOpParm(myUniformguidesegments, nodeidx, "uniformguidesegments", time, graph->isDirect()?nullptr:depnode);
527  mySkininterp = false;
528  if (true && ( (true&&!(((getUseguides()==0)))) ) )
529  graph->evalOpParm(mySkininterp, nodeidx, "skininterp", time, graph->isDirect()?nullptr:depnode);
530  myUseInterpMesh = false;
531  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==0)))) ) )
532  graph->evalOpParm(myUseInterpMesh, nodeidx, "useinterpmesh", time, graph->isDirect()?nullptr:depnode);
533  mySkininterpguidesattrib = "guides"_UTsh;
534  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==0))||((getUseInterpMesh()==0)))) ) )
535  graph->evalOpParm(mySkininterpguidesattrib, nodeidx, "skininterpguidesattrib", time, graph->isDirect()?nullptr:depnode);
536  mySkininterpweightsattrib = "weights"_UTsh;
537  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==0))||((getUseInterpMesh()==0)))) ) )
538  graph->evalOpParm(mySkininterpweightsattrib, nodeidx, "skininterpweightsattrib", time, graph->isDirect()?nullptr:depnode);
539  mySkinguidemode = 0;
540  if (true)
541  graph->evalOpParm(mySkinguidemode, nodeidx, "skinguidemode", time, graph->isDirect()?nullptr:depnode);
542  myGuideblendmethod = 0;
543  if (true)
544  graph->evalOpParm(myGuideblendmethod, nodeidx, "guideblendmethod", time, graph->isDirect()?nullptr:depnode);
545  myGuidegroup = ""_UTsh;
546  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1)))) ) )
547  graph->evalOpParm(myGuidegroup, nodeidx, "guidegroup", time, graph->isDirect()?nullptr:depnode);
548  myInfluenceradius = 0.05;
549  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1)))) ) )
550  graph->evalOpParm(myInfluenceradius, nodeidx, "influenceradius", time, graph->isDirect()?nullptr:depnode);
551  myInfluenceradiusoverride = 0;
552  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1)))) ) )
553  graph->evalOpParm(myInfluenceradiusoverride, nodeidx, "influenceradiusoverride", time, graph->isDirect()?nullptr:depnode);
554  myInfluenceradiusoptions = 0;
555  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1)))) ) )
556  graph->evalOpParm(myInfluenceradiusoptions, nodeidx, "influenceradiusoptions", time, graph->isDirect()?nullptr:depnode);
557  myInfluenceradiusinrange = UT_Vector2D(0,1);
558  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1))||((int64(getInfluenceradiusoverride())==0))||((getInfluenceradiusoptions()!=1)&&(getInfluenceradiusoptions()!=3)))) ) )
559  graph->evalOpParm(myInfluenceradiusinrange, nodeidx, "influenceradiusinrange", time, graph->isDirect()?nullptr:depnode);
560  myInfluenceradiusoutrange = UT_Vector2D(0,1);
561  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1))||((int64(getInfluenceradiusoverride())==0))||((getInfluenceradiusoptions()!=1)&&(getInfluenceradiusoptions()!=3)))) ) )
562  graph->evalOpParm(myInfluenceradiusoutrange, nodeidx, "influenceradiusoutrange", time, graph->isDirect()?nullptr:depnode);
563  myInfluenceradiusattrib = "influenceradiusscale"_UTsh;
564  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1))||((int64(getInfluenceradiusoverride())!=1)))) ) )
565  graph->evalOpParm(myInfluenceradiusattrib, nodeidx, "influenceradiusattrib", time, graph->isDirect()?nullptr:depnode);
566  myInfluenceradiustexture = ""_UTsh;
567  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1))||((int64(getInfluenceradiusoverride())!=2)))) ) )
568  graph->evalOpParm(myInfluenceradiustexture, nodeidx, "influenceradiustexture", time, graph->isDirect()?nullptr:depnode);
569  myInfluenceradiustextureprim = "influenceradiusscale"_UTsh;
570  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1))||((int64(getInfluenceradiusoverride())!=3)))) ) )
571  graph->evalOpParm(myInfluenceradiustextureprim, nodeidx, "influenceradiustextureprim", time, graph->isDirect()?nullptr:depnode);
572  myInfluencedecay = 2;
573  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1)))) ) )
574  graph->evalOpParm(myInfluencedecay, nodeidx, "influencedecay", time, graph->isDirect()?nullptr:depnode);
575  myInfluencedecayoverride = 0;
576  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1)))) ) )
577  graph->evalOpParm(myInfluencedecayoverride, nodeidx, "influencedecayoverride", time, graph->isDirect()?nullptr:depnode);
578  myInfluencedecayoptions = 0;
579  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1)))) ) )
580  graph->evalOpParm(myInfluencedecayoptions, nodeidx, "influencedecayoptions", time, graph->isDirect()?nullptr:depnode);
581  myInfluencedecayinrange = UT_Vector2D(0,1);
582  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1))||((int64(getInfluencedecayoverride())==0))||((getInfluencedecayoptions()!=1)&&(getInfluencedecayoptions()!=3)))) ) )
583  graph->evalOpParm(myInfluencedecayinrange, nodeidx, "influencedecayinrange", time, graph->isDirect()?nullptr:depnode);
584  myInfluencedecayoutrange = UT_Vector2D(0,1);
585  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1))||((int64(getInfluencedecayoverride())==0))||((getInfluencedecayoptions()!=1)&&(getInfluencedecayoptions()!=3)))) ) )
586  graph->evalOpParm(myInfluencedecayoutrange, nodeidx, "influencedecayoutrange", time, graph->isDirect()?nullptr:depnode);
587  myInfluencedecayattrib = "influencedecayscale"_UTsh;
588  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1))||((int64(getInfluencedecayoverride())!=1)))) ) )
589  graph->evalOpParm(myInfluencedecayattrib, nodeidx, "influencedecayattrib", time, graph->isDirect()?nullptr:depnode);
590  myInfluencedecaytexture = ""_UTsh;
591  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1))||((int64(getInfluencedecayoverride())!=2)))) ) )
592  graph->evalOpParm(myInfluencedecaytexture, nodeidx, "influencedecaytexture", time, graph->isDirect()?nullptr:depnode);
593  myInfluencedecaytextureprim = "influencedecayscale"_UTsh;
594  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1))||((int64(getInfluencedecayoverride())!=3)))) ) )
595  graph->evalOpParm(myInfluencedecaytextureprim, nodeidx, "influencedecaytextureprim", time, graph->isDirect()?nullptr:depnode);
596  myMaxguidecount = 10;
597  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1)))) ) )
598  graph->evalOpParm(myMaxguidecount, nodeidx, "maxguidecount", time, graph->isDirect()?nullptr:depnode);
599  myMaxguidecountoverride = 0;
600  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1)))) ) )
601  graph->evalOpParm(myMaxguidecountoverride, nodeidx, "maxguidecountoverride", time, graph->isDirect()?nullptr:depnode);
602  myMaxguidecountoptions = 0;
603  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1)))) ) )
604  graph->evalOpParm(myMaxguidecountoptions, nodeidx, "maxguidecountoptions", time, graph->isDirect()?nullptr:depnode);
605  myMaxguidecountinrange = UT_Vector2D(0,1);
606  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1))||((int64(getMaxguidecountoverride())==0))||((getMaxguidecountoptions()!=1)&&(getMaxguidecountoptions()!=3)))) ) )
607  graph->evalOpParm(myMaxguidecountinrange, nodeidx, "maxguidecountinrange", time, graph->isDirect()?nullptr:depnode);
608  myMaxguidecountoutrange = UT_Vector2D(0,1);
609  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1))||((int64(getMaxguidecountoverride())==0))||((getMaxguidecountoptions()!=1)&&(getMaxguidecountoptions()!=3)))) ) )
610  graph->evalOpParm(myMaxguidecountoutrange, nodeidx, "maxguidecountoutrange", time, graph->isDirect()?nullptr:depnode);
611  myMaxguidecountattrib = "maxguidecountscale"_UTsh;
612  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1))||((int64(getMaxguidecountoverride())!=1)))) ) )
613  graph->evalOpParm(myMaxguidecountattrib, nodeidx, "maxguidecountattrib", time, graph->isDirect()?nullptr:depnode);
614  myMaxguidecounttexture = ""_UTsh;
615  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1))||((int64(getMaxguidecountoverride())!=2)))) ) )
616  graph->evalOpParm(myMaxguidecounttexture, nodeidx, "maxguidecounttexture", time, graph->isDirect()?nullptr:depnode);
617  myMaxguidecounttextureprim = "maxguidecountscale"_UTsh;
618  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1))||((int64(getMaxguidecountoverride())!=3)))) ) )
619  graph->evalOpParm(myMaxguidecounttextureprim, nodeidx, "maxguidecounttextureprim", time, graph->isDirect()?nullptr:depnode);
620  myMaxguideangle = 90;
621  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1)))) ) )
622  graph->evalOpParm(myMaxguideangle, nodeidx, "maxguideangle", time, graph->isDirect()?nullptr:depnode);
623  myMaxguideangleoverride = 0;
624  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1)))) ) )
625  graph->evalOpParm(myMaxguideangleoverride, nodeidx, "maxguideangleoverride", time, graph->isDirect()?nullptr:depnode);
626  myMaxguideangleoptions = 0;
627  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1)))) ) )
628  graph->evalOpParm(myMaxguideangleoptions, nodeidx, "maxguideangleoptions", time, graph->isDirect()?nullptr:depnode);
629  myMaxguideangleinrange = UT_Vector2D(0,1);
630  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1))||((int64(getMaxguideangleoverride())==0))||((getMaxguideangleoptions()!=1)&&(getMaxguideangleoptions()!=3)))) ) )
631  graph->evalOpParm(myMaxguideangleinrange, nodeidx, "maxguideangleinrange", time, graph->isDirect()?nullptr:depnode);
632  myMaxguideangleoutrange = UT_Vector2D(0,1);
633  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1))||((int64(getMaxguideangleoverride())==0))||((getMaxguideangleoptions()!=1)&&(getMaxguideangleoptions()!=3)))) ) )
634  graph->evalOpParm(myMaxguideangleoutrange, nodeidx, "maxguideangleoutrange", time, graph->isDirect()?nullptr:depnode);
635  myMaxguideangleattrib = "maxguideanglescale"_UTsh;
636  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1))||((int64(getMaxguideangleoverride())!=1)))) ) )
637  graph->evalOpParm(myMaxguideangleattrib, nodeidx, "maxguideangleattrib", time, graph->isDirect()?nullptr:depnode);
638  myMaxguideangletexture = ""_UTsh;
639  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1))||((int64(getMaxguideangleoverride())!=2)))) ) )
640  graph->evalOpParm(myMaxguideangletexture, nodeidx, "maxguideangletexture", time, graph->isDirect()?nullptr:depnode);
641  myMaxguideangletextureprim = "maxguideanglescale"_UTsh;
642  if (true && ( (true&&!(((getUseguides()==0))||((getSkininterp()==1))||((int64(getMaxguideangleoverride())!=3)))) ) )
643  graph->evalOpParm(myMaxguideangletextureprim, nodeidx, "maxguideangletextureprim", time, graph->isDirect()?nullptr:depnode);
644  myClumpcrossover = 0;
645  if (true && ( (true&&!(((getUseguides()==0)))) ) )
646  graph->evalOpParm(myClumpcrossover, nodeidx, "clumpcrossover", time, graph->isDirect()?nullptr:depnode);
647  myClumpcrossoveroverride = 0;
648  if (true && ( (true&&!(((getUseguides()==0)))) ) )
649  graph->evalOpParm(myClumpcrossoveroverride, nodeidx, "clumpcrossoveroverride", time, graph->isDirect()?nullptr:depnode);
650  myClumpcrossoveroptions = 0;
651  if (true && ( (true&&!(((getUseguides()==0)))) ) )
652  graph->evalOpParm(myClumpcrossoveroptions, nodeidx, "clumpcrossoveroptions", time, graph->isDirect()?nullptr:depnode);
653  myClumpcrossoverinrange = UT_Vector2D(0,1);
654  if (true && ( (true&&!(((getUseguides()==0))||((int64(getClumpcrossoveroverride())==0))||((getClumpcrossoveroptions()!=1)&&(getClumpcrossoveroptions()!=3)))) ) )
655  graph->evalOpParm(myClumpcrossoverinrange, nodeidx, "clumpcrossoverinrange", time, graph->isDirect()?nullptr:depnode);
656  myClumpcrossoveroutrange = UT_Vector2D(0,1);
657  if (true && ( (true&&!(((getUseguides()==0))||((int64(getClumpcrossoveroverride())==0))||((getClumpcrossoveroptions()!=1)&&(getClumpcrossoveroptions()!=3)))) ) )
658  graph->evalOpParm(myClumpcrossoveroutrange, nodeidx, "clumpcrossoveroutrange", time, graph->isDirect()?nullptr:depnode);
659  myClumpcrossoverattrib = "clumpcrossoverscale"_UTsh;
660  if (true && ( (true&&!(((getUseguides()==0))||((int64(getClumpcrossoveroverride())!=1)))) ) )
661  graph->evalOpParm(myClumpcrossoverattrib, nodeidx, "clumpcrossoverattrib", time, graph->isDirect()?nullptr:depnode);
662  myClumpcrossovertexture = ""_UTsh;
663  if (true && ( (true&&!(((getUseguides()==0))||((int64(getClumpcrossoveroverride())!=2)))) ) )
664  graph->evalOpParm(myClumpcrossovertexture, nodeidx, "clumpcrossovertexture", time, graph->isDirect()?nullptr:depnode);
665  myClumpcrossovertextureprim = "clumpcrossoverscale"_UTsh;
666  if (true && ( (true&&!(((getUseguides()==0))||((int64(getClumpcrossoveroverride())!=3)))) ) )
667  graph->evalOpParm(myClumpcrossovertextureprim, nodeidx, "clumpcrossovertextureprim", time, graph->isDirect()?nullptr:depnode);
668  myGrowunguided = true;
669  if (true && ( (true&&!(((getUseguides()==0)))) ) )
670  graph->evalOpParm(myGrowunguided, nodeidx, "growunguided", time, graph->isDirect()?nullptr:depnode);
671  myUseinitdirattrib = true;
672  if (true && ( (true&&!(((getUseguides()==1)&&(getGrowunguided()==0)))) ) )
673  graph->evalOpParm(myUseinitdirattrib, nodeidx, "useinitdirattrib", time, graph->isDirect()?nullptr:depnode);
674  myInitdirattrib = "furdirection"_UTsh;
675  if (true && ( (true&&!(((getUseinitdirattrib()==0))||((getUseguides()==1)&&(getGrowunguided()==0)))) ) )
676  graph->evalOpParm(myInitdirattrib, nodeidx, "initdirattrib", time, graph->isDirect()?nullptr:depnode);
677  myUnguidedsegments = 8;
678  if (true && ( (true&&!(((getUseguides()==1)&&(getGrowunguided()==0)))) ) )
679  graph->evalOpParm(myUnguidedsegments, nodeidx, "unguidedsegments", time, graph->isDirect()?nullptr:depnode);
680  myUnguidedlength = 0.05;
681  if (true && ( (true&&!(((getUseguides()==1)&&(getGrowunguided()==0)))) ) )
682  graph->evalOpParm(myUnguidedlength, nodeidx, "unguidedlength", time, graph->isDirect()?nullptr:depnode);
683  myUnguidedlengthoverride = 0;
684  if (true && ( (true&&!(((getUseguides()==1)&&(getGrowunguided()==0)))) ) )
685  graph->evalOpParm(myUnguidedlengthoverride, nodeidx, "unguidedlengthoverride", time, graph->isDirect()?nullptr:depnode);
686  myUnguidedlengthoptions = 0;
687  if (true && ( (true&&!(((getUseguides()==1)&&(getGrowunguided()==0)))) ) )
688  graph->evalOpParm(myUnguidedlengthoptions, nodeidx, "unguidedlengthoptions", time, graph->isDirect()?nullptr:depnode);
689  myUnguidedlengthinrange = UT_Vector2D(0,1);
690  if (true && ( (true&&!(((getUseguides()==1)&&(getGrowunguided()==0))||((int64(getUnguidedlengthoverride())==0))||((getUnguidedlengthoptions()!=1)&&(getUnguidedlengthoptions()!=3)))) ) )
691  graph->evalOpParm(myUnguidedlengthinrange, nodeidx, "unguidedlengthinrange", time, graph->isDirect()?nullptr:depnode);
692  myUnguidedlengthoutrange = UT_Vector2D(0,1);
693  if (true && ( (true&&!(((getUseguides()==1)&&(getGrowunguided()==0))||((int64(getUnguidedlengthoverride())==0))||((getUnguidedlengthoptions()!=1)&&(getUnguidedlengthoptions()!=3)))) ) )
694  graph->evalOpParm(myUnguidedlengthoutrange, nodeidx, "unguidedlengthoutrange", time, graph->isDirect()?nullptr:depnode);
695  myUnguidedlengthattrib = "unguidedlengthscale"_UTsh;
696  if (true && ( (true&&!(((getUseguides()==1)&&(getGrowunguided()==0))||((int64(getUnguidedlengthoverride())!=1)))) ) )
697  graph->evalOpParm(myUnguidedlengthattrib, nodeidx, "unguidedlengthattrib", time, graph->isDirect()?nullptr:depnode);
698  myUnguidedlengthtexture = ""_UTsh;
699  if (true && ( (true&&!(((getUseguides()==1)&&(getGrowunguided()==0))||((int64(getUnguidedlengthoverride())!=2)))) ) )
700  graph->evalOpParm(myUnguidedlengthtexture, nodeidx, "unguidedlengthtexture", time, graph->isDirect()?nullptr:depnode);
701  myUnguidedlengthtextureprim = "unguidedlengthscale"_UTsh;
702  if (true && ( (true&&!(((getUseguides()==1)&&(getGrowunguided()==0))||((int64(getUnguidedlengthoverride())!=3)))) ) )
703  graph->evalOpParm(myUnguidedlengthtextureprim, nodeidx, "unguidedlengthtextureprim", time, graph->isDirect()?nullptr:depnode);
704  myUnguidedminlength = 1e-05;
705  if (true && ( (true&&!(((getUseguides()==1)&&(getGrowunguided()==0)))) ) )
706  graph->evalOpParm(myUnguidedminlength, nodeidx, "unguidedminlength", time, graph->isDirect()?nullptr:depnode);
707  myCreateweightattribs = false;
708  if (true && ( (true&&!(((getUseguides()==0)))) ) )
709  graph->evalOpParm(myCreateweightattribs, nodeidx, "createweightattribs", time, graph->isDirect()?nullptr:depnode);
710  myCreaterestrootattrib = true;
711  if (true)
712  graph->evalOpParm(myCreaterestrootattrib, nodeidx, "createrestrootattrib", time, graph->isDirect()?nullptr:depnode);
713  myClumpidattrib = "clumpid"_UTsh;
714  if (true)
715  graph->evalOpParm(myClumpidattrib, nodeidx, "clumpidattrib", time, graph->isDirect()?nullptr:depnode);
716  myOutputthicknessattrib = true;
717  if (true)
718  graph->evalOpParm(myOutputthicknessattrib, nodeidx, "outputthicknessattrib", time, graph->isDirect()?nullptr:depnode);
719  myThicknessattrib = "width"_UTsh;
720  if (true && ( (true&&!(((getOutputthicknessattrib()==0)))) ) )
721  graph->evalOpParm(myThicknessattrib, nodeidx, "thicknessattrib", time, graph->isDirect()?nullptr:depnode);
722  myThickness = 0.001;
723  if (true && ( (true&&!(((getOutputthicknessattrib()==0)))) ) )
724  graph->evalOpParm(myThickness, nodeidx, "thickness", time, graph->isDirect()?nullptr:depnode);
725  myThicknessoverride = 0;
726  if (true && ( (true&&!(((getOutputthicknessattrib()==0)))) ) )
727  graph->evalOpParm(myThicknessoverride, nodeidx, "thicknessoverride", time, graph->isDirect()?nullptr:depnode);
728  myThicknessskinattrib = "thicknessscale"_UTsh;
729  if (true && ( (true&&!(((getOutputthicknessattrib()==0))||((int64(getThicknessoverride())!=1)))) ) )
730  graph->evalOpParm(myThicknessskinattrib, nodeidx, "thicknessskinattrib", time, graph->isDirect()?nullptr:depnode);
731  myThicknesstexture = ""_UTsh;
732  if (true && ( (true&&!(((getOutputthicknessattrib()==0))||((int64(getThicknessoverride())!=2)))) ) )
733  graph->evalOpParm(myThicknesstexture, nodeidx, "thicknesstexture", time, graph->isDirect()?nullptr:depnode);
734  myHairprofile = UT_Ramp::buildFromDefault("1pos ( 0.17753121256828308 ) 1value ( 1 ) 1interp ( bspline ) 2pos ( 0.85230350494384766 ) 2value ( 1 ) 2interp ( bspline ) 3pos ( 1 ) 3value ( 0 ) 3interp ( bspline )");
735  if (true && ( (true&&!(((getOutputthicknessattrib()==0)))) ) )
736  graph->evalOpParm(myHairprofile, nodeidx, "hairprofile", time, graph->isDirect()?nullptr:depnode);
737  myPointattribs = ""_UTsh;
738  if (true)
739  graph->evalOpParm(myPointattribs, nodeidx, "pointattribs", time, graph->isDirect()?nullptr:depnode);
740  myVertattribs = ""_UTsh;
741  if (true && ( (true&&!(((int64(getMode())!=0)))) ) )
742  graph->evalOpParm(myVertattribs, nodeidx, "vertattribs", time, graph->isDirect()?nullptr:depnode);
743  myPrimattribs = ""_UTsh;
744  if (true && ( (true&&!(((int64(getMode())!=0)))) ) )
745  graph->evalOpParm(myPrimattribs, nodeidx, "primattribs", time, graph->isDirect()?nullptr:depnode);
746  myDetailattribs = ""_UTsh;
747  if (true)
748  graph->evalOpParm(myDetailattribs, nodeidx, "detailattribs", time, graph->isDirect()?nullptr:depnode);
749  myGuidepointattribs = ""_UTsh;
750  if (true)
751  graph->evalOpParm(myGuidepointattribs, nodeidx, "guidepointattribs", time, graph->isDirect()?nullptr:depnode);
752  myGuideprimattribs = ""_UTsh;
753  if (true)
754  graph->evalOpParm(myGuideprimattribs, nodeidx, "guideprimattribs", time, graph->isDirect()?nullptr:depnode);
755  if (true)
756  {
757  int64 length = 0;
758  graph->evalOpParm(length, nodeidx, "folder_weightarraypairs", time, graph->isDirect()?nullptr:depnode);
759  if (length < 0) length = 0;
760  myWeightArrayPairs.setSize(length);
761  for (exint i = 0; i < length; i++)
762  {
763  int parmidx[1];
764  int offsets[1];
765  parmidx[0] = i+0;
766  offsets[0] = 0;
767  auto && _curentry = myWeightArrayPairs(i);
768  (void) _curentry;
769  _curentry.guideindexattrib = "guides"_UTsh;
770  if (true)
771  graph->evalOpParmInst(_curentry.guideindexattrib, nodeidx, "guideindexattrib#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
772  _curentry.guideweightattrib = "weights"_UTsh;
773  if (true)
774  graph->evalOpParmInst(_curentry.guideweightattrib, nodeidx, "guideweightattrib#", parmidx, offsets, time, graph->isDirect()?nullptr:depnode, 2-1);
775 
776  }
777  }
778  else
779  myWeightArrayPairs.clear();
780 
781  }
782 
783 
784  void loadFromOpSubclass(const LoadParms &loadparms) override
785  {
786  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
787  }
788 
789 
790  void copyFrom(const OP_NodeParms *src) override
791  {
792  *this = *((const SOP_HairGenCoreParms *)src);
793  }
794 
795  template <typename T>
796  void
797  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
798  {
799  if (idx.size() < 1)
800  return;
801  UT_ASSERT(idx.size() == instance.size()+1);
802  if (idx.size() != instance.size()+1)
803  return;
804  switch (idx[0])
805  {
806  case 0:
807  coerceValue(value, myMode);
808  break;
809  case 1:
810  coerceValue(value, myGroup);
811  break;
812  case 2:
813  coerceValue(value, myUvattrib);
814  break;
815  case 3:
816  coerceValue(value, myLimittobbox);
817  break;
818  case 4:
819  coerceValue(value, myBBoxSize);
820  break;
821  case 5:
822  coerceValue(value, myBBoxCenter);
823  break;
824  case 6:
825  coerceValue(value, myPrune);
826  break;
827  case 7:
828  coerceValue(value, myPruningratio);
829  break;
830  case 8:
831  coerceValue(value, myPrunethicken);
832  break;
833  case 9:
834  coerceValue(value, myUseguides);
835  break;
836  case 10:
837  coerceValue(value, myUniformguidesegments);
838  break;
839  case 11:
840  coerceValue(value, mySkininterp);
841  break;
842  case 12:
843  coerceValue(value, myUseInterpMesh);
844  break;
845  case 13:
846  coerceValue(value, mySkininterpguidesattrib);
847  break;
848  case 14:
849  coerceValue(value, mySkininterpweightsattrib);
850  break;
851  case 15:
852  coerceValue(value, mySkinguidemode);
853  break;
854  case 16:
855  coerceValue(value, myGuideblendmethod);
856  break;
857  case 17:
858  coerceValue(value, myGuidegroup);
859  break;
860  case 18:
861  coerceValue(value, myInfluenceradius);
862  break;
863  case 19:
864  coerceValue(value, myInfluenceradiusoverride);
865  break;
866  case 20:
867  coerceValue(value, myInfluenceradiusoptions);
868  break;
869  case 21:
870  coerceValue(value, myInfluenceradiusinrange);
871  break;
872  case 22:
873  coerceValue(value, myInfluenceradiusoutrange);
874  break;
875  case 23:
876  coerceValue(value, myInfluenceradiusattrib);
877  break;
878  case 24:
879  coerceValue(value, myInfluenceradiustexture);
880  break;
881  case 25:
882  coerceValue(value, myInfluenceradiustextureprim);
883  break;
884  case 26:
885  coerceValue(value, myInfluencedecay);
886  break;
887  case 27:
888  coerceValue(value, myInfluencedecayoverride);
889  break;
890  case 28:
891  coerceValue(value, myInfluencedecayoptions);
892  break;
893  case 29:
894  coerceValue(value, myInfluencedecayinrange);
895  break;
896  case 30:
897  coerceValue(value, myInfluencedecayoutrange);
898  break;
899  case 31:
900  coerceValue(value, myInfluencedecayattrib);
901  break;
902  case 32:
903  coerceValue(value, myInfluencedecaytexture);
904  break;
905  case 33:
906  coerceValue(value, myInfluencedecaytextureprim);
907  break;
908  case 34:
909  coerceValue(value, myMaxguidecount);
910  break;
911  case 35:
912  coerceValue(value, myMaxguidecountoverride);
913  break;
914  case 36:
915  coerceValue(value, myMaxguidecountoptions);
916  break;
917  case 37:
918  coerceValue(value, myMaxguidecountinrange);
919  break;
920  case 38:
921  coerceValue(value, myMaxguidecountoutrange);
922  break;
923  case 39:
924  coerceValue(value, myMaxguidecountattrib);
925  break;
926  case 40:
927  coerceValue(value, myMaxguidecounttexture);
928  break;
929  case 41:
930  coerceValue(value, myMaxguidecounttextureprim);
931  break;
932  case 42:
933  coerceValue(value, myMaxguideangle);
934  break;
935  case 43:
936  coerceValue(value, myMaxguideangleoverride);
937  break;
938  case 44:
939  coerceValue(value, myMaxguideangleoptions);
940  break;
941  case 45:
942  coerceValue(value, myMaxguideangleinrange);
943  break;
944  case 46:
945  coerceValue(value, myMaxguideangleoutrange);
946  break;
947  case 47:
948  coerceValue(value, myMaxguideangleattrib);
949  break;
950  case 48:
951  coerceValue(value, myMaxguideangletexture);
952  break;
953  case 49:
954  coerceValue(value, myMaxguideangletextureprim);
955  break;
956  case 50:
957  coerceValue(value, myClumpcrossover);
958  break;
959  case 51:
960  coerceValue(value, myClumpcrossoveroverride);
961  break;
962  case 52:
963  coerceValue(value, myClumpcrossoveroptions);
964  break;
965  case 53:
966  coerceValue(value, myClumpcrossoverinrange);
967  break;
968  case 54:
969  coerceValue(value, myClumpcrossoveroutrange);
970  break;
971  case 55:
972  coerceValue(value, myClumpcrossoverattrib);
973  break;
974  case 56:
975  coerceValue(value, myClumpcrossovertexture);
976  break;
977  case 57:
978  coerceValue(value, myClumpcrossovertextureprim);
979  break;
980  case 58:
981  coerceValue(value, myGrowunguided);
982  break;
983  case 59:
984  coerceValue(value, myUseinitdirattrib);
985  break;
986  case 60:
987  coerceValue(value, myInitdirattrib);
988  break;
989  case 61:
990  coerceValue(value, myUnguidedsegments);
991  break;
992  case 62:
993  coerceValue(value, myUnguidedlength);
994  break;
995  case 63:
996  coerceValue(value, myUnguidedlengthoverride);
997  break;
998  case 64:
999  coerceValue(value, myUnguidedlengthoptions);
1000  break;
1001  case 65:
1002  coerceValue(value, myUnguidedlengthinrange);
1003  break;
1004  case 66:
1005  coerceValue(value, myUnguidedlengthoutrange);
1006  break;
1007  case 67:
1008  coerceValue(value, myUnguidedlengthattrib);
1009  break;
1010  case 68:
1011  coerceValue(value, myUnguidedlengthtexture);
1012  break;
1013  case 69:
1014  coerceValue(value, myUnguidedlengthtextureprim);
1015  break;
1016  case 70:
1017  coerceValue(value, myUnguidedminlength);
1018  break;
1019  case 71:
1020  coerceValue(value, myCreateweightattribs);
1021  break;
1022  case 72:
1023  coerceValue(value, myCreaterestrootattrib);
1024  break;
1025  case 73:
1026  coerceValue(value, myClumpidattrib);
1027  break;
1028  case 74:
1029  coerceValue(value, myOutputthicknessattrib);
1030  break;
1031  case 75:
1032  coerceValue(value, myThicknessattrib);
1033  break;
1034  case 76:
1035  coerceValue(value, myThickness);
1036  break;
1037  case 77:
1038  coerceValue(value, myThicknessoverride);
1039  break;
1040  case 78:
1041  coerceValue(value, myThicknessskinattrib);
1042  break;
1043  case 79:
1044  coerceValue(value, myThicknesstexture);
1045  break;
1046  case 80:
1047  coerceValue(value, myHairprofile);
1048  break;
1049  case 81:
1050  coerceValue(value, myPointattribs);
1051  break;
1052  case 82:
1053  coerceValue(value, myVertattribs);
1054  break;
1055  case 83:
1056  coerceValue(value, myPrimattribs);
1057  break;
1058  case 84:
1059  coerceValue(value, myDetailattribs);
1060  break;
1061  case 85:
1062  coerceValue(value, myGuidepointattribs);
1063  break;
1064  case 86:
1065  coerceValue(value, myGuideprimattribs);
1066  break;
1067  case 87:
1068  if (idx.size() == 1)
1069  coerceValue(value, myWeightArrayPairs.entries());
1070  else if (instance[0] < myWeightArrayPairs.entries())
1071  {
1072  auto && _data = myWeightArrayPairs(instance[0]);
1073  switch (idx[1])
1074  {
1075  case 0:
1076  coerceValue(value, _data.guideindexattrib);
1077  break;
1078  case 1:
1079  coerceValue(value, _data.guideweightattrib);
1080  break;
1081 
1082  }
1083  }
1084  break;
1085 
1086  }
1087  }
1088 
1089  bool isParmColorRamp(exint idx) const override
1090  {
1091  switch (idx)
1092  {
1093 
1094  }
1095  return false;
1096  }
1097 
1098  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
1099  { doGetParmValue(idx, instance, value); }
1100  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
1101  { doGetParmValue(idx, instance, value); }
1102  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
1103  { doGetParmValue(idx, instance, value); }
1104  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
1105  { doGetParmValue(idx, instance, value); }
1106  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
1107  { doGetParmValue(idx, instance, value); }
1108  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
1109  { doGetParmValue(idx, instance, value); }
1110  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
1111  { doGetParmValue(idx, instance, value); }
1112  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
1113  { doGetParmValue(idx, instance, value); }
1114  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
1115  { doGetParmValue(idx, instance, value); }
1116  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
1117  { doGetParmValue(idx, instance, value); }
1118  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
1119  { doGetParmValue(idx, instance, value); }
1120 
1121  template <typename T>
1122  void
1123  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
1124  {
1125  if (idx.size() < 1)
1126  return;
1127  UT_ASSERT(idx.size() == instance.size()+1);
1128  if (idx.size() != instance.size()+1)
1129  return;
1130  switch (idx[0])
1131  {
1132  case 0:
1133  coerceValue(myMode, clampMinValue(0, clampMaxValue(1, value ) ));
1134  break;
1135  case 1:
1136  coerceValue(myGroup, ( ( value ) ));
1137  break;
1138  case 2:
1139  coerceValue(myUvattrib, ( ( value ) ));
1140  break;
1141  case 3:
1142  coerceValue(myLimittobbox, ( ( value ) ));
1143  break;
1144  case 4:
1145  coerceValue(myBBoxSize, ( ( value ) ));
1146  break;
1147  case 5:
1148  coerceValue(myBBoxCenter, ( ( value ) ));
1149  break;
1150  case 6:
1151  coerceValue(myPrune, ( ( value ) ));
1152  break;
1153  case 7:
1154  coerceValue(myPruningratio, ( ( value ) ));
1155  break;
1156  case 8:
1157  coerceValue(myPrunethicken, ( ( value ) ));
1158  break;
1159  case 9:
1160  coerceValue(myUseguides, ( ( value ) ));
1161  break;
1162  case 10:
1163  coerceValue(myUniformguidesegments, ( ( value ) ));
1164  break;
1165  case 11:
1166  coerceValue(mySkininterp, ( ( value ) ));
1167  break;
1168  case 12:
1169  coerceValue(myUseInterpMesh, ( ( value ) ));
1170  break;
1171  case 13:
1172  coerceValue(mySkininterpguidesattrib, ( ( value ) ));
1173  break;
1174  case 14:
1175  coerceValue(mySkininterpweightsattrib, ( ( value ) ));
1176  break;
1177  case 15:
1178  coerceValue(mySkinguidemode, clampMinValue(0, clampMaxValue(1, value ) ));
1179  break;
1180  case 16:
1181  coerceValue(myGuideblendmethod, clampMinValue(0, clampMaxValue(1, value ) ));
1182  break;
1183  case 17:
1184  coerceValue(myGuidegroup, ( ( value ) ));
1185  break;
1186  case 18:
1187  coerceValue(myInfluenceradius, ( ( value ) ));
1188  break;
1189  case 19:
1190  coerceValue(myInfluenceradiusoverride, clampMinValue(0, clampMaxValue(3, value ) ));
1191  break;
1192  case 20:
1193  coerceValue(myInfluenceradiusoptions, ( ( value ) ));
1194  break;
1195  case 21:
1196  coerceValue(myInfluenceradiusinrange, ( ( value ) ));
1197  break;
1198  case 22:
1199  coerceValue(myInfluenceradiusoutrange, ( ( value ) ));
1200  break;
1201  case 23:
1202  coerceValue(myInfluenceradiusattrib, ( ( value ) ));
1203  break;
1204  case 24:
1205  coerceValue(myInfluenceradiustexture, ( ( value ) ));
1206  break;
1207  case 25:
1208  coerceValue(myInfluenceradiustextureprim, ( ( value ) ));
1209  break;
1210  case 26:
1211  coerceValue(myInfluencedecay, ( ( value ) ));
1212  break;
1213  case 27:
1214  coerceValue(myInfluencedecayoverride, clampMinValue(0, clampMaxValue(3, value ) ));
1215  break;
1216  case 28:
1217  coerceValue(myInfluencedecayoptions, ( ( value ) ));
1218  break;
1219  case 29:
1220  coerceValue(myInfluencedecayinrange, ( ( value ) ));
1221  break;
1222  case 30:
1223  coerceValue(myInfluencedecayoutrange, ( ( value ) ));
1224  break;
1225  case 31:
1226  coerceValue(myInfluencedecayattrib, ( ( value ) ));
1227  break;
1228  case 32:
1229  coerceValue(myInfluencedecaytexture, ( ( value ) ));
1230  break;
1231  case 33:
1232  coerceValue(myInfluencedecaytextureprim, ( ( value ) ));
1233  break;
1234  case 34:
1235  coerceValue(myMaxguidecount, ( ( value ) ));
1236  break;
1237  case 35:
1238  coerceValue(myMaxguidecountoverride, clampMinValue(0, clampMaxValue(3, value ) ));
1239  break;
1240  case 36:
1241  coerceValue(myMaxguidecountoptions, ( ( value ) ));
1242  break;
1243  case 37:
1244  coerceValue(myMaxguidecountinrange, ( ( value ) ));
1245  break;
1246  case 38:
1247  coerceValue(myMaxguidecountoutrange, ( ( value ) ));
1248  break;
1249  case 39:
1250  coerceValue(myMaxguidecountattrib, ( ( value ) ));
1251  break;
1252  case 40:
1253  coerceValue(myMaxguidecounttexture, ( ( value ) ));
1254  break;
1255  case 41:
1256  coerceValue(myMaxguidecounttextureprim, ( ( value ) ));
1257  break;
1258  case 42:
1259  coerceValue(myMaxguideangle, clampMinValue(0, clampMaxValue(180, value ) ));
1260  break;
1261  case 43:
1262  coerceValue(myMaxguideangleoverride, clampMinValue(0, clampMaxValue(3, value ) ));
1263  break;
1264  case 44:
1265  coerceValue(myMaxguideangleoptions, ( ( value ) ));
1266  break;
1267  case 45:
1268  coerceValue(myMaxguideangleinrange, ( ( value ) ));
1269  break;
1270  case 46:
1271  coerceValue(myMaxguideangleoutrange, ( ( value ) ));
1272  break;
1273  case 47:
1274  coerceValue(myMaxguideangleattrib, ( ( value ) ));
1275  break;
1276  case 48:
1277  coerceValue(myMaxguideangletexture, ( ( value ) ));
1278  break;
1279  case 49:
1280  coerceValue(myMaxguideangletextureprim, ( ( value ) ));
1281  break;
1282  case 50:
1283  coerceValue(myClumpcrossover, ( ( value ) ));
1284  break;
1285  case 51:
1286  coerceValue(myClumpcrossoveroverride, clampMinValue(0, clampMaxValue(3, value ) ));
1287  break;
1288  case 52:
1289  coerceValue(myClumpcrossoveroptions, ( ( value ) ));
1290  break;
1291  case 53:
1292  coerceValue(myClumpcrossoverinrange, ( ( value ) ));
1293  break;
1294  case 54:
1295  coerceValue(myClumpcrossoveroutrange, ( ( value ) ));
1296  break;
1297  case 55:
1298  coerceValue(myClumpcrossoverattrib, ( ( value ) ));
1299  break;
1300  case 56:
1301  coerceValue(myClumpcrossovertexture, ( ( value ) ));
1302  break;
1303  case 57:
1304  coerceValue(myClumpcrossovertextureprim, ( ( value ) ));
1305  break;
1306  case 58:
1307  coerceValue(myGrowunguided, ( ( value ) ));
1308  break;
1309  case 59:
1310  coerceValue(myUseinitdirattrib, ( ( value ) ));
1311  break;
1312  case 60:
1313  coerceValue(myInitdirattrib, ( ( value ) ));
1314  break;
1315  case 61:
1316  coerceValue(myUnguidedsegments, clampMinValue(1, ( value ) ));
1317  break;
1318  case 62:
1319  coerceValue(myUnguidedlength, ( ( value ) ));
1320  break;
1321  case 63:
1322  coerceValue(myUnguidedlengthoverride, clampMinValue(0, clampMaxValue(3, value ) ));
1323  break;
1324  case 64:
1325  coerceValue(myUnguidedlengthoptions, ( ( value ) ));
1326  break;
1327  case 65:
1328  coerceValue(myUnguidedlengthinrange, ( ( value ) ));
1329  break;
1330  case 66:
1331  coerceValue(myUnguidedlengthoutrange, ( ( value ) ));
1332  break;
1333  case 67:
1334  coerceValue(myUnguidedlengthattrib, ( ( value ) ));
1335  break;
1336  case 68:
1337  coerceValue(myUnguidedlengthtexture, ( ( value ) ));
1338  break;
1339  case 69:
1340  coerceValue(myUnguidedlengthtextureprim, ( ( value ) ));
1341  break;
1342  case 70:
1343  coerceValue(myUnguidedminlength, ( ( value ) ));
1344  break;
1345  case 71:
1346  coerceValue(myCreateweightattribs, ( ( value ) ));
1347  break;
1348  case 72:
1349  coerceValue(myCreaterestrootattrib, ( ( value ) ));
1350  break;
1351  case 73:
1352  coerceValue(myClumpidattrib, ( ( value ) ));
1353  break;
1354  case 74:
1355  coerceValue(myOutputthicknessattrib, ( ( value ) ));
1356  break;
1357  case 75:
1358  coerceValue(myThicknessattrib, ( ( value ) ));
1359  break;
1360  case 76:
1361  coerceValue(myThickness, ( ( value ) ));
1362  break;
1363  case 77:
1364  coerceValue(myThicknessoverride, clampMinValue(0, clampMaxValue(2, value ) ));
1365  break;
1366  case 78:
1367  coerceValue(myThicknessskinattrib, ( ( value ) ));
1368  break;
1369  case 79:
1370  coerceValue(myThicknesstexture, ( ( value ) ));
1371  break;
1372  case 80:
1373  coerceValue(myHairprofile, clampMinValue(1, ( value ) ));
1374  break;
1375  case 81:
1376  coerceValue(myPointattribs, ( ( value ) ));
1377  break;
1378  case 82:
1379  coerceValue(myVertattribs, ( ( value ) ));
1380  break;
1381  case 83:
1382  coerceValue(myPrimattribs, ( ( value ) ));
1383  break;
1384  case 84:
1385  coerceValue(myDetailattribs, ( ( value ) ));
1386  break;
1387  case 85:
1388  coerceValue(myGuidepointattribs, ( ( value ) ));
1389  break;
1390  case 86:
1391  coerceValue(myGuideprimattribs, ( ( value ) ));
1392  break;
1393  case 87:
1394  if (idx.size() == 1)
1395  {
1396  exint newsize;
1397  coerceValue(newsize, value);
1398  if (newsize < 0) newsize = 0;
1399  myWeightArrayPairs.setSize(newsize);
1400  }
1401  else
1402  {
1403  if (instance[0] < 0)
1404  return;
1405  myWeightArrayPairs.setSizeIfNeeded(instance[0]+1);
1406  auto && _data = myWeightArrayPairs(instance[0]);
1407  switch (idx[1])
1408  {
1409  case 0:
1410  coerceValue(_data.guideindexattrib, value);
1411  break;
1412  case 1:
1413  coerceValue(_data.guideweightattrib, value);
1414  break;
1415 
1416  }
1417  }
1418  break;
1419 
1420  }
1421  }
1422 
1423  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
1424  { doSetParmValue(idx, instance, value); }
1425  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
1426  { doSetParmValue(idx, instance, value); }
1427  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
1428  { doSetParmValue(idx, instance, value); }
1429  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
1430  { doSetParmValue(idx, instance, value); }
1431  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
1432  { doSetParmValue(idx, instance, value); }
1433  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
1434  { doSetParmValue(idx, instance, value); }
1435  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
1436  { doSetParmValue(idx, instance, value); }
1437  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
1438  { doSetParmValue(idx, instance, value); }
1439  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
1440  { doSetParmValue(idx, instance, value); }
1441  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
1442  { doSetParmValue(idx, instance, value); }
1443  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
1444  { doSetParmValue(idx, instance, value); }
1445 
1446  exint getNestNumParms(TempIndex idx) const override
1447  {
1448  if (idx.size() == 0)
1449  return 88;
1450  switch (idx[0])
1451  {
1452  case 87:
1453  return 2;
1454 
1455  }
1456  // Invalid
1457  return 0;
1458  }
1459 
1460  const char *getNestParmName(TempIndex fieldnum) const override
1461  {
1462  if (fieldnum.size() < 1)
1463  return 0;
1464  switch (fieldnum[0])
1465  {
1466  case 0:
1467  return "mode";
1468  case 1:
1469  return "group";
1470  case 2:
1471  return "uvattrib";
1472  case 3:
1473  return "limittobbox";
1474  case 4:
1475  return "bboxsize";
1476  case 5:
1477  return "bboxcenter";
1478  case 6:
1479  return "prune";
1480  case 7:
1481  return "pruningratio";
1482  case 8:
1483  return "prunethicken";
1484  case 9:
1485  return "useguides";
1486  case 10:
1487  return "uniformguidesegments";
1488  case 11:
1489  return "skininterp";
1490  case 12:
1491  return "useinterpmesh";
1492  case 13:
1493  return "skininterpguidesattrib";
1494  case 14:
1495  return "skininterpweightsattrib";
1496  case 15:
1497  return "skinguidemode";
1498  case 16:
1499  return "guideblendmethod";
1500  case 17:
1501  return "guidegroup";
1502  case 18:
1503  return "influenceradius";
1504  case 19:
1505  return "influenceradiusoverride";
1506  case 20:
1507  return "influenceradiusoptions";
1508  case 21:
1509  return "influenceradiusinrange";
1510  case 22:
1511  return "influenceradiusoutrange";
1512  case 23:
1513  return "influenceradiusattrib";
1514  case 24:
1515  return "influenceradiustexture";
1516  case 25:
1517  return "influenceradiustextureprim";
1518  case 26:
1519  return "influencedecay";
1520  case 27:
1521  return "influencedecayoverride";
1522  case 28:
1523  return "influencedecayoptions";
1524  case 29:
1525  return "influencedecayinrange";
1526  case 30:
1527  return "influencedecayoutrange";
1528  case 31:
1529  return "influencedecayattrib";
1530  case 32:
1531  return "influencedecaytexture";
1532  case 33:
1533  return "influencedecaytextureprim";
1534  case 34:
1535  return "maxguidecount";
1536  case 35:
1537  return "maxguidecountoverride";
1538  case 36:
1539  return "maxguidecountoptions";
1540  case 37:
1541  return "maxguidecountinrange";
1542  case 38:
1543  return "maxguidecountoutrange";
1544  case 39:
1545  return "maxguidecountattrib";
1546  case 40:
1547  return "maxguidecounttexture";
1548  case 41:
1549  return "maxguidecounttextureprim";
1550  case 42:
1551  return "maxguideangle";
1552  case 43:
1553  return "maxguideangleoverride";
1554  case 44:
1555  return "maxguideangleoptions";
1556  case 45:
1557  return "maxguideangleinrange";
1558  case 46:
1559  return "maxguideangleoutrange";
1560  case 47:
1561  return "maxguideangleattrib";
1562  case 48:
1563  return "maxguideangletexture";
1564  case 49:
1565  return "maxguideangletextureprim";
1566  case 50:
1567  return "clumpcrossover";
1568  case 51:
1569  return "clumpcrossoveroverride";
1570  case 52:
1571  return "clumpcrossoveroptions";
1572  case 53:
1573  return "clumpcrossoverinrange";
1574  case 54:
1575  return "clumpcrossoveroutrange";
1576  case 55:
1577  return "clumpcrossoverattrib";
1578  case 56:
1579  return "clumpcrossovertexture";
1580  case 57:
1581  return "clumpcrossovertextureprim";
1582  case 58:
1583  return "growunguided";
1584  case 59:
1585  return "useinitdirattrib";
1586  case 60:
1587  return "initdirattrib";
1588  case 61:
1589  return "unguidedsegments";
1590  case 62:
1591  return "unguidedlength";
1592  case 63:
1593  return "unguidedlengthoverride";
1594  case 64:
1595  return "unguidedlengthoptions";
1596  case 65:
1597  return "unguidedlengthinrange";
1598  case 66:
1599  return "unguidedlengthoutrange";
1600  case 67:
1601  return "unguidedlengthattrib";
1602  case 68:
1603  return "unguidedlengthtexture";
1604  case 69:
1605  return "unguidedlengthtextureprim";
1606  case 70:
1607  return "unguidedminlength";
1608  case 71:
1609  return "createweightattribs";
1610  case 72:
1611  return "createrestrootattrib";
1612  case 73:
1613  return "clumpidattrib";
1614  case 74:
1615  return "outputthicknessattrib";
1616  case 75:
1617  return "thicknessattrib";
1618  case 76:
1619  return "thickness";
1620  case 77:
1621  return "thicknessoverride";
1622  case 78:
1623  return "thicknessskinattrib";
1624  case 79:
1625  return "thicknesstexture";
1626  case 80:
1627  return "hairprofile";
1628  case 81:
1629  return "pointattribs";
1630  case 82:
1631  return "vertattribs";
1632  case 83:
1633  return "primattribs";
1634  case 84:
1635  return "detailattribs";
1636  case 85:
1637  return "guidepointattribs";
1638  case 86:
1639  return "guideprimattribs";
1640  case 87:
1641  if (fieldnum.size() == 1)
1642  return "folder_weightarraypairs";
1643  switch (fieldnum[1])
1644  {
1645  case 0:
1646  return "guideindexattrib#";
1647  case 1:
1648  return "guideweightattrib#";
1649 
1650  }
1651  return 0;
1652 
1653  }
1654  return 0;
1655  }
1656 
1657  ParmType getNestParmType(TempIndex fieldnum) const override
1658  {
1659  if (fieldnum.size() < 1)
1660  return PARM_UNSUPPORTED;
1661  switch (fieldnum[0])
1662  {
1663  case 0:
1664  return PARM_INTEGER;
1665  case 1:
1666  return PARM_STRING;
1667  case 2:
1668  return PARM_STRING;
1669  case 3:
1670  return PARM_INTEGER;
1671  case 4:
1672  return PARM_VECTOR3;
1673  case 5:
1674  return PARM_VECTOR3;
1675  case 6:
1676  return PARM_INTEGER;
1677  case 7:
1678  return PARM_FLOAT;
1679  case 8:
1680  return PARM_INTEGER;
1681  case 9:
1682  return PARM_INTEGER;
1683  case 10:
1684  return PARM_INTEGER;
1685  case 11:
1686  return PARM_INTEGER;
1687  case 12:
1688  return PARM_INTEGER;
1689  case 13:
1690  return PARM_STRING;
1691  case 14:
1692  return PARM_STRING;
1693  case 15:
1694  return PARM_INTEGER;
1695  case 16:
1696  return PARM_INTEGER;
1697  case 17:
1698  return PARM_STRING;
1699  case 18:
1700  return PARM_FLOAT;
1701  case 19:
1702  return PARM_INTEGER;
1703  case 20:
1704  return PARM_INTEGER;
1705  case 21:
1706  return PARM_VECTOR2;
1707  case 22:
1708  return PARM_VECTOR2;
1709  case 23:
1710  return PARM_STRING;
1711  case 24:
1712  return PARM_STRING;
1713  case 25:
1714  return PARM_STRING;
1715  case 26:
1716  return PARM_FLOAT;
1717  case 27:
1718  return PARM_INTEGER;
1719  case 28:
1720  return PARM_INTEGER;
1721  case 29:
1722  return PARM_VECTOR2;
1723  case 30:
1724  return PARM_VECTOR2;
1725  case 31:
1726  return PARM_STRING;
1727  case 32:
1728  return PARM_STRING;
1729  case 33:
1730  return PARM_STRING;
1731  case 34:
1732  return PARM_INTEGER;
1733  case 35:
1734  return PARM_INTEGER;
1735  case 36:
1736  return PARM_INTEGER;
1737  case 37:
1738  return PARM_VECTOR2;
1739  case 38:
1740  return PARM_VECTOR2;
1741  case 39:
1742  return PARM_STRING;
1743  case 40:
1744  return PARM_STRING;
1745  case 41:
1746  return PARM_STRING;
1747  case 42:
1748  return PARM_FLOAT;
1749  case 43:
1750  return PARM_INTEGER;
1751  case 44:
1752  return PARM_INTEGER;
1753  case 45:
1754  return PARM_VECTOR2;
1755  case 46:
1756  return PARM_VECTOR2;
1757  case 47:
1758  return PARM_STRING;
1759  case 48:
1760  return PARM_STRING;
1761  case 49:
1762  return PARM_STRING;
1763  case 50:
1764  return PARM_FLOAT;
1765  case 51:
1766  return PARM_INTEGER;
1767  case 52:
1768  return PARM_INTEGER;
1769  case 53:
1770  return PARM_VECTOR2;
1771  case 54:
1772  return PARM_VECTOR2;
1773  case 55:
1774  return PARM_STRING;
1775  case 56:
1776  return PARM_STRING;
1777  case 57:
1778  return PARM_STRING;
1779  case 58:
1780  return PARM_INTEGER;
1781  case 59:
1782  return PARM_INTEGER;
1783  case 60:
1784  return PARM_STRING;
1785  case 61:
1786  return PARM_INTEGER;
1787  case 62:
1788  return PARM_FLOAT;
1789  case 63:
1790  return PARM_INTEGER;
1791  case 64:
1792  return PARM_INTEGER;
1793  case 65:
1794  return PARM_VECTOR2;
1795  case 66:
1796  return PARM_VECTOR2;
1797  case 67:
1798  return PARM_STRING;
1799  case 68:
1800  return PARM_STRING;
1801  case 69:
1802  return PARM_STRING;
1803  case 70:
1804  return PARM_FLOAT;
1805  case 71:
1806  return PARM_INTEGER;
1807  case 72:
1808  return PARM_INTEGER;
1809  case 73:
1810  return PARM_STRING;
1811  case 74:
1812  return PARM_INTEGER;
1813  case 75:
1814  return PARM_STRING;
1815  case 76:
1816  return PARM_FLOAT;
1817  case 77:
1818  return PARM_INTEGER;
1819  case 78:
1820  return PARM_STRING;
1821  case 79:
1822  return PARM_STRING;
1823  case 80:
1824  return PARM_RAMP;
1825  case 81:
1826  return PARM_STRING;
1827  case 82:
1828  return PARM_STRING;
1829  case 83:
1830  return PARM_STRING;
1831  case 84:
1832  return PARM_STRING;
1833  case 85:
1834  return PARM_STRING;
1835  case 86:
1836  return PARM_STRING;
1837  case 87:
1838  if (fieldnum.size() == 1)
1839  return PARM_MULTIPARM;
1840  switch (fieldnum[1])
1841  {
1842  case 0:
1843  return PARM_STRING;
1844  case 1:
1845  return PARM_STRING;
1846 
1847  }
1848  return PARM_UNSUPPORTED;
1849 
1850  }
1851  return PARM_UNSUPPORTED;
1852  }
1853 
1854  // Boiler plate to load individual types.
1855  static void loadData(UT_IStream &is, int64 &v)
1856  { is.bread(&v, 1); }
1857  static void loadData(UT_IStream &is, bool &v)
1858  { int64 iv; is.bread(&iv, 1); v = iv; }
1859  static void loadData(UT_IStream &is, fpreal64 &v)
1860  { is.bread<fpreal64>(&v, 1); }
1861  static void loadData(UT_IStream &is, UT_Vector2D &v)
1862  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
1863  static void loadData(UT_IStream &is, UT_Vector3D &v)
1864  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1865  is.bread<fpreal64>(&v.z(), 1); }
1866  static void loadData(UT_IStream &is, UT_Vector4D &v)
1867  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1868  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
1869  static void loadData(UT_IStream &is, UT_Matrix2D &v)
1870  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
1871  static void loadData(UT_IStream &is, UT_Matrix3D &v)
1872  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
1873  static void loadData(UT_IStream &is, UT_Matrix4D &v)
1874  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
1875  static void loadData(UT_IStream &is, UT_Vector2I &v)
1876  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
1877  static void loadData(UT_IStream &is, UT_Vector3I &v)
1878  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1879  is.bread<int64>(&v.z(), 1); }
1880  static void loadData(UT_IStream &is, UT_Vector4I &v)
1881  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1882  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
1884  { is.bread(v); }
1886  { UT_StringHolder rampdata;
1887  loadData(is, rampdata);
1888  if (rampdata.isstring())
1889  {
1890  v.reset(new UT_Ramp());
1891  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
1892  v->load(istr);
1893  }
1894  else v.reset();
1895  }
1898  loadData(is, data);
1899  if (data.isstring())
1900  {
1901  // Find the data type.
1902  const char *colon = UT_StringWrap(data).findChar(':');
1903  if (colon)
1904  {
1905  int typelen = colon - data.buffer();
1907  type.strncpy(data.buffer(), typelen);
1908  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
1909 
1910  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
1911  }
1912  }
1913  else v.reset();
1914  }
1915 
1916  static void saveData(std::ostream &os, int64 v)
1917  { UTwrite(os, &v); }
1918  static void saveData(std::ostream &os, bool v)
1919  { int64 iv = v; UTwrite(os, &iv); }
1920  static void saveData(std::ostream &os, fpreal64 v)
1921  { UTwrite<fpreal64>(os, &v); }
1922  static void saveData(std::ostream &os, UT_Vector2D v)
1923  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
1924  static void saveData(std::ostream &os, UT_Vector3D v)
1925  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1926  UTwrite<fpreal64>(os, &v.z()); }
1927  static void saveData(std::ostream &os, UT_Vector4D v)
1928  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1929  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
1930  static void saveData(std::ostream &os, UT_Matrix2D v)
1932  static void saveData(std::ostream &os, UT_Matrix3D v)
1934  static void saveData(std::ostream &os, UT_Matrix4D v)
1936  static void saveData(std::ostream &os, UT_StringHolder s)
1937  { UT_StringWrap(s).saveBinary(os); }
1938  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
1940  UT_OStringStream ostr;
1941  if (s) s->save(ostr);
1942  result = ostr.str();
1943  saveData(os, result);
1944  }
1945  static void saveData(std::ostream &os, PRM_DataItemHandle s)
1947  UT_OStringStream ostr;
1948  if (s)
1949  {
1950  ostr << s->getDataTypeToken();
1951  ostr << ":";
1952  s->saveBinary(ostr);
1953  }
1954  result = ostr.str();
1955  saveData(os, result);
1956  }
1957 
1958 
1959  void save(std::ostream &os) const
1960  {
1961  int32 v = version();
1962  UTwrite(os, &v);
1963  saveData(os, myMode);
1964  saveData(os, myGroup);
1965  saveData(os, myUvattrib);
1966  saveData(os, myLimittobbox);
1967  saveData(os, myBBoxSize);
1968  saveData(os, myBBoxCenter);
1969  saveData(os, myPrune);
1970  saveData(os, myPruningratio);
1971  saveData(os, myPrunethicken);
1972  saveData(os, myUseguides);
1973  saveData(os, myUniformguidesegments);
1974  saveData(os, mySkininterp);
1975  saveData(os, myUseInterpMesh);
1976  saveData(os, mySkininterpguidesattrib);
1977  saveData(os, mySkininterpweightsattrib);
1978  saveData(os, mySkinguidemode);
1979  saveData(os, myGuideblendmethod);
1980  saveData(os, myGuidegroup);
1981  saveData(os, myInfluenceradius);
1982  saveData(os, myInfluenceradiusoverride);
1983  saveData(os, myInfluenceradiusoptions);
1984  saveData(os, myInfluenceradiusinrange);
1985  saveData(os, myInfluenceradiusoutrange);
1986  saveData(os, myInfluenceradiusattrib);
1987  saveData(os, myInfluenceradiustexture);
1988  saveData(os, myInfluenceradiustextureprim);
1989  saveData(os, myInfluencedecay);
1990  saveData(os, myInfluencedecayoverride);
1991  saveData(os, myInfluencedecayoptions);
1992  saveData(os, myInfluencedecayinrange);
1993  saveData(os, myInfluencedecayoutrange);
1994  saveData(os, myInfluencedecayattrib);
1995  saveData(os, myInfluencedecaytexture);
1996  saveData(os, myInfluencedecaytextureprim);
1997  saveData(os, myMaxguidecount);
1998  saveData(os, myMaxguidecountoverride);
1999  saveData(os, myMaxguidecountoptions);
2000  saveData(os, myMaxguidecountinrange);
2001  saveData(os, myMaxguidecountoutrange);
2002  saveData(os, myMaxguidecountattrib);
2003  saveData(os, myMaxguidecounttexture);
2004  saveData(os, myMaxguidecounttextureprim);
2005  saveData(os, myMaxguideangle);
2006  saveData(os, myMaxguideangleoverride);
2007  saveData(os, myMaxguideangleoptions);
2008  saveData(os, myMaxguideangleinrange);
2009  saveData(os, myMaxguideangleoutrange);
2010  saveData(os, myMaxguideangleattrib);
2011  saveData(os, myMaxguideangletexture);
2012  saveData(os, myMaxguideangletextureprim);
2013  saveData(os, myClumpcrossover);
2014  saveData(os, myClumpcrossoveroverride);
2015  saveData(os, myClumpcrossoveroptions);
2016  saveData(os, myClumpcrossoverinrange);
2017  saveData(os, myClumpcrossoveroutrange);
2018  saveData(os, myClumpcrossoverattrib);
2019  saveData(os, myClumpcrossovertexture);
2020  saveData(os, myClumpcrossovertextureprim);
2021  saveData(os, myGrowunguided);
2022  saveData(os, myUseinitdirattrib);
2023  saveData(os, myInitdirattrib);
2024  saveData(os, myUnguidedsegments);
2025  saveData(os, myUnguidedlength);
2026  saveData(os, myUnguidedlengthoverride);
2027  saveData(os, myUnguidedlengthoptions);
2028  saveData(os, myUnguidedlengthinrange);
2029  saveData(os, myUnguidedlengthoutrange);
2030  saveData(os, myUnguidedlengthattrib);
2031  saveData(os, myUnguidedlengthtexture);
2032  saveData(os, myUnguidedlengthtextureprim);
2033  saveData(os, myUnguidedminlength);
2034  saveData(os, myCreateweightattribs);
2035  saveData(os, myCreaterestrootattrib);
2036  saveData(os, myClumpidattrib);
2037  saveData(os, myOutputthicknessattrib);
2038  saveData(os, myThicknessattrib);
2039  saveData(os, myThickness);
2040  saveData(os, myThicknessoverride);
2041  saveData(os, myThicknessskinattrib);
2042  saveData(os, myThicknesstexture);
2043  saveData(os, myHairprofile);
2044  saveData(os, myPointattribs);
2045  saveData(os, myVertattribs);
2046  saveData(os, myPrimattribs);
2047  saveData(os, myDetailattribs);
2048  saveData(os, myGuidepointattribs);
2049  saveData(os, myGuideprimattribs);
2050  {
2051  int64 length = myWeightArrayPairs.entries();
2052  UTwrite(os, &length);
2053  for (exint i = 0; i < length; i++)
2054  {
2055  auto && _curentry = myWeightArrayPairs(i);
2056  (void) _curentry;
2057  saveData(os, _curentry.guideindexattrib);
2058  saveData(os, _curentry.guideweightattrib);
2059 
2060  }
2061  }
2062 
2063  }
2064 
2065  bool load(UT_IStream &is)
2066  {
2067  int32 v;
2068  is.bread(&v, 1);
2069  if (version() != v)
2070  {
2071  // Fail incompatible versions
2072  return false;
2073  }
2074  loadData(is, myMode);
2075  loadData(is, myGroup);
2076  loadData(is, myUvattrib);
2077  loadData(is, myLimittobbox);
2078  loadData(is, myBBoxSize);
2079  loadData(is, myBBoxCenter);
2080  loadData(is, myPrune);
2081  loadData(is, myPruningratio);
2082  loadData(is, myPrunethicken);
2083  loadData(is, myUseguides);
2084  loadData(is, myUniformguidesegments);
2085  loadData(is, mySkininterp);
2086  loadData(is, myUseInterpMesh);
2087  loadData(is, mySkininterpguidesattrib);
2088  loadData(is, mySkininterpweightsattrib);
2089  loadData(is, mySkinguidemode);
2090  loadData(is, myGuideblendmethod);
2091  loadData(is, myGuidegroup);
2092  loadData(is, myInfluenceradius);
2093  loadData(is, myInfluenceradiusoverride);
2094  loadData(is, myInfluenceradiusoptions);
2095  loadData(is, myInfluenceradiusinrange);
2096  loadData(is, myInfluenceradiusoutrange);
2097  loadData(is, myInfluenceradiusattrib);
2098  loadData(is, myInfluenceradiustexture);
2099  loadData(is, myInfluenceradiustextureprim);
2100  loadData(is, myInfluencedecay);
2101  loadData(is, myInfluencedecayoverride);
2102  loadData(is, myInfluencedecayoptions);
2103  loadData(is, myInfluencedecayinrange);
2104  loadData(is, myInfluencedecayoutrange);
2105  loadData(is, myInfluencedecayattrib);
2106  loadData(is, myInfluencedecaytexture);
2107  loadData(is, myInfluencedecaytextureprim);
2108  loadData(is, myMaxguidecount);
2109  loadData(is, myMaxguidecountoverride);
2110  loadData(is, myMaxguidecountoptions);
2111  loadData(is, myMaxguidecountinrange);
2112  loadData(is, myMaxguidecountoutrange);
2113  loadData(is, myMaxguidecountattrib);
2114  loadData(is, myMaxguidecounttexture);
2115  loadData(is, myMaxguidecounttextureprim);
2116  loadData(is, myMaxguideangle);
2117  loadData(is, myMaxguideangleoverride);
2118  loadData(is, myMaxguideangleoptions);
2119  loadData(is, myMaxguideangleinrange);
2120  loadData(is, myMaxguideangleoutrange);
2121  loadData(is, myMaxguideangleattrib);
2122  loadData(is, myMaxguideangletexture);
2123  loadData(is, myMaxguideangletextureprim);
2124  loadData(is, myClumpcrossover);
2125  loadData(is, myClumpcrossoveroverride);
2126  loadData(is, myClumpcrossoveroptions);
2127  loadData(is, myClumpcrossoverinrange);
2128  loadData(is, myClumpcrossoveroutrange);
2129  loadData(is, myClumpcrossoverattrib);
2130  loadData(is, myClumpcrossovertexture);
2131  loadData(is, myClumpcrossovertextureprim);
2132  loadData(is, myGrowunguided);
2133  loadData(is, myUseinitdirattrib);
2134  loadData(is, myInitdirattrib);
2135  loadData(is, myUnguidedsegments);
2136  loadData(is, myUnguidedlength);
2137  loadData(is, myUnguidedlengthoverride);
2138  loadData(is, myUnguidedlengthoptions);
2139  loadData(is, myUnguidedlengthinrange);
2140  loadData(is, myUnguidedlengthoutrange);
2141  loadData(is, myUnguidedlengthattrib);
2142  loadData(is, myUnguidedlengthtexture);
2143  loadData(is, myUnguidedlengthtextureprim);
2144  loadData(is, myUnguidedminlength);
2145  loadData(is, myCreateweightattribs);
2146  loadData(is, myCreaterestrootattrib);
2147  loadData(is, myClumpidattrib);
2148  loadData(is, myOutputthicknessattrib);
2149  loadData(is, myThicknessattrib);
2150  loadData(is, myThickness);
2151  loadData(is, myThicknessoverride);
2152  loadData(is, myThicknessskinattrib);
2153  loadData(is, myThicknesstexture);
2154  loadData(is, myHairprofile);
2155  loadData(is, myPointattribs);
2156  loadData(is, myVertattribs);
2157  loadData(is, myPrimattribs);
2158  loadData(is, myDetailattribs);
2159  loadData(is, myGuidepointattribs);
2160  loadData(is, myGuideprimattribs);
2161  {
2162  int64 length;
2163  is.read(&length, 1);
2164  myWeightArrayPairs.setSize(length);
2165  for (exint i = 0; i < length; i++)
2166  {
2167  auto && _curentry = myWeightArrayPairs(i);
2168  (void) _curentry;
2169  loadData(is, _curentry.guideindexattrib);
2170  loadData(is, _curentry.guideweightattrib);
2171 
2172  }
2173  }
2174 
2175  return true;
2176  }
2177 
2178  Mode getMode() const { return Mode(myMode); }
2179  void setMode(Mode val) { myMode = int64(val); }
2180  Mode opMode(const SOP_NodeVerb::CookParms &cookparms) const
2181  {
2182  SOP_Node *thissop = cookparms.getNode();
2183  if (!thissop) return getMode();
2184  int64 result;
2185  OP_Utils::evalOpParm(result, thissop, "mode", cookparms.getCookTime(), 0);
2186  return Mode(result);
2187  }
2188  const UT_StringHolder & getGroup() const { return myGroup; }
2189  void setGroup(const UT_StringHolder & val) { myGroup = val; }
2191  {
2192  SOP_Node *thissop = cookparms.getNode();
2193  if (!thissop) return getGroup();
2195  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
2196  return result;
2197  }
2198  const UT_StringHolder & getUvattrib() const { return myUvattrib; }
2199  void setUvattrib(const UT_StringHolder & val) { myUvattrib = val; }
2201  {
2202  SOP_Node *thissop = cookparms.getNode();
2203  if (!thissop) return getUvattrib();
2205  OP_Utils::evalOpParm(result, thissop, "uvattrib", cookparms.getCookTime(), 0);
2206  return result;
2207  }
2208  bool getLimittobbox() const { return myLimittobbox; }
2209  void setLimittobbox(bool val) { myLimittobbox = val; }
2210  bool opLimittobbox(const SOP_NodeVerb::CookParms &cookparms) const
2211  {
2212  SOP_Node *thissop = cookparms.getNode();
2213  if (!thissop) return getLimittobbox();
2214  bool result;
2215  OP_Utils::evalOpParm(result, thissop, "limittobbox", cookparms.getCookTime(), 0);
2216  return result;
2217  }
2218  UT_Vector3D getBBoxSize() const { return myBBoxSize; }
2219  void setBBoxSize(UT_Vector3D val) { myBBoxSize = val; }
2221  {
2222  SOP_Node *thissop = cookparms.getNode();
2223  if (!thissop) return getBBoxSize();
2225  OP_Utils::evalOpParm(result, thissop, "bboxsize", cookparms.getCookTime(), 0);
2226  return result;
2227  }
2228  UT_Vector3D getBBoxCenter() const { return myBBoxCenter; }
2229  void setBBoxCenter(UT_Vector3D val) { myBBoxCenter = val; }
2231  {
2232  SOP_Node *thissop = cookparms.getNode();
2233  if (!thissop) return getBBoxCenter();
2235  OP_Utils::evalOpParm(result, thissop, "bboxcenter", cookparms.getCookTime(), 0);
2236  return result;
2237  }
2238  bool getPrune() const { return myPrune; }
2239  void setPrune(bool val) { myPrune = val; }
2240  bool opPrune(const SOP_NodeVerb::CookParms &cookparms) const
2241  {
2242  SOP_Node *thissop = cookparms.getNode();
2243  if (!thissop) return getPrune();
2244  bool result;
2245  OP_Utils::evalOpParm(result, thissop, "prune", cookparms.getCookTime(), 0);
2246  return result;
2247  }
2248  fpreal64 getPruningratio() const { return myPruningratio; }
2249  void setPruningratio(fpreal64 val) { myPruningratio = val; }
2251  {
2252  SOP_Node *thissop = cookparms.getNode();
2253  if (!thissop) return getPruningratio();
2254  fpreal64 result;
2255  OP_Utils::evalOpParm(result, thissop, "pruningratio", cookparms.getCookTime(), 0);
2256  return result;
2257  }
2258  bool getPrunethicken() const { return myPrunethicken; }
2259  void setPrunethicken(bool val) { myPrunethicken = val; }
2260  bool opPrunethicken(const SOP_NodeVerb::CookParms &cookparms) const
2261  {
2262  SOP_Node *thissop = cookparms.getNode();
2263  if (!thissop) return getPrunethicken();
2264  bool result;
2265  OP_Utils::evalOpParm(result, thissop, "prunethicken", cookparms.getCookTime(), 0);
2266  return result;
2267  }
2268  bool getUseguides() const { return myUseguides; }
2269  void setUseguides(bool val) { myUseguides = val; }
2270  bool opUseguides(const SOP_NodeVerb::CookParms &cookparms) const
2271  {
2272  SOP_Node *thissop = cookparms.getNode();
2273  if (!thissop) return getUseguides();
2274  bool result;
2275  OP_Utils::evalOpParm(result, thissop, "useguides", cookparms.getCookTime(), 0);
2276  return result;
2277  }
2278  bool getUniformguidesegments() const { return myUniformguidesegments; }
2279  void setUniformguidesegments(bool val) { myUniformguidesegments = val; }
2281  {
2282  SOP_Node *thissop = cookparms.getNode();
2283  if (!thissop) return getUniformguidesegments();
2284  bool result;
2285  OP_Utils::evalOpParm(result, thissop, "uniformguidesegments", cookparms.getCookTime(), 0);
2286  return result;
2287  }
2288  bool getSkininterp() const { return mySkininterp; }
2289  void setSkininterp(bool val) { mySkininterp = val; }
2290  bool opSkininterp(const SOP_NodeVerb::CookParms &cookparms) const
2291  {
2292  SOP_Node *thissop = cookparms.getNode();
2293  if (!thissop) return getSkininterp();
2294  bool result;
2295  OP_Utils::evalOpParm(result, thissop, "skininterp", cookparms.getCookTime(), 0);
2296  return result;
2297  }
2298  bool getUseInterpMesh() const { return myUseInterpMesh; }
2299  void setUseInterpMesh(bool val) { myUseInterpMesh = val; }
2300  bool opUseInterpMesh(const SOP_NodeVerb::CookParms &cookparms) const
2301  {
2302  SOP_Node *thissop = cookparms.getNode();
2303  if (!thissop) return getUseInterpMesh();
2304  bool result;
2305  OP_Utils::evalOpParm(result, thissop, "useinterpmesh", cookparms.getCookTime(), 0);
2306  return result;
2307  }
2308  const UT_StringHolder & getSkininterpguidesattrib() const { return mySkininterpguidesattrib; }
2309  void setSkininterpguidesattrib(const UT_StringHolder & val) { mySkininterpguidesattrib = val; }
2311  {
2312  SOP_Node *thissop = cookparms.getNode();
2313  if (!thissop) return getSkininterpguidesattrib();
2315  OP_Utils::evalOpParm(result, thissop, "skininterpguidesattrib", cookparms.getCookTime(), 0);
2316  return result;
2317  }
2318  const UT_StringHolder & getSkininterpweightsattrib() const { return mySkininterpweightsattrib; }
2319  void setSkininterpweightsattrib(const UT_StringHolder & val) { mySkininterpweightsattrib = val; }
2321  {
2322  SOP_Node *thissop = cookparms.getNode();
2323  if (!thissop) return getSkininterpweightsattrib();
2325  OP_Utils::evalOpParm(result, thissop, "skininterpweightsattrib", cookparms.getCookTime(), 0);
2326  return result;
2327  }
2328  Skinguidemode getSkinguidemode() const { return Skinguidemode(mySkinguidemode); }
2329  void setSkinguidemode(Skinguidemode val) { mySkinguidemode = int64(val); }
2331  {
2332  SOP_Node *thissop = cookparms.getNode();
2333  if (!thissop) return getSkinguidemode();
2334  int64 result;
2335  OP_Utils::evalOpParm(result, thissop, "skinguidemode", cookparms.getCookTime(), 0);
2336  return Skinguidemode(result);
2337  }
2338  Guideblendmethod getGuideblendmethod() const { return Guideblendmethod(myGuideblendmethod); }
2339  void setGuideblendmethod(Guideblendmethod val) { myGuideblendmethod = int64(val); }
2341  {
2342  SOP_Node *thissop = cookparms.getNode();
2343  if (!thissop) return getGuideblendmethod();
2344  int64 result;
2345  OP_Utils::evalOpParm(result, thissop, "guideblendmethod", cookparms.getCookTime(), 0);
2346  return Guideblendmethod(result);
2347  }
2348  const UT_StringHolder & getGuidegroup() const { return myGuidegroup; }
2349  void setGuidegroup(const UT_StringHolder & val) { myGuidegroup = val; }
2351  {
2352  SOP_Node *thissop = cookparms.getNode();
2353  if (!thissop) return getGuidegroup();
2355  OP_Utils::evalOpParm(result, thissop, "guidegroup", cookparms.getCookTime(), 0);
2356  return result;
2357  }
2358  fpreal64 getInfluenceradius() const { return myInfluenceradius; }
2359  void setInfluenceradius(fpreal64 val) { myInfluenceradius = val; }
2361  {
2362  SOP_Node *thissop = cookparms.getNode();
2363  if (!thissop) return getInfluenceradius();
2364  fpreal64 result;
2365  OP_Utils::evalOpParm(result, thissop, "influenceradius", cookparms.getCookTime(), 0);
2366  return result;
2367  }
2368  Influenceradiusoverride getInfluenceradiusoverride() const { return Influenceradiusoverride(myInfluenceradiusoverride); }
2369  void setInfluenceradiusoverride(Influenceradiusoverride val) { myInfluenceradiusoverride = int64(val); }
2371  {
2372  SOP_Node *thissop = cookparms.getNode();
2373  if (!thissop) return getInfluenceradiusoverride();
2374  int64 result;
2375  OP_Utils::evalOpParm(result, thissop, "influenceradiusoverride", cookparms.getCookTime(), 0);
2376  return Influenceradiusoverride(result);
2377  }
2378  int64 getInfluenceradiusoptions() const { return myInfluenceradiusoptions; }
2379  void setInfluenceradiusoptions(int64 val) { myInfluenceradiusoptions = val; }
2381  {
2382  SOP_Node *thissop = cookparms.getNode();
2383  if (!thissop) return getInfluenceradiusoptions();
2384  int64 result;
2385  OP_Utils::evalOpParm(result, thissop, "influenceradiusoptions", cookparms.getCookTime(), 0);
2386  return result;
2387  }
2388  UT_Vector2D getInfluenceradiusinrange() const { return myInfluenceradiusinrange; }
2389  void setInfluenceradiusinrange(UT_Vector2D val) { myInfluenceradiusinrange = val; }
2391  {
2392  SOP_Node *thissop = cookparms.getNode();
2393  if (!thissop) return getInfluenceradiusinrange();
2395  OP_Utils::evalOpParm(result, thissop, "influenceradiusinrange", cookparms.getCookTime(), 0);
2396  return result;
2397  }
2398  UT_Vector2D getInfluenceradiusoutrange() const { return myInfluenceradiusoutrange; }
2399  void setInfluenceradiusoutrange(UT_Vector2D val) { myInfluenceradiusoutrange = val; }
2401  {
2402  SOP_Node *thissop = cookparms.getNode();
2403  if (!thissop) return getInfluenceradiusoutrange();
2405  OP_Utils::evalOpParm(result, thissop, "influenceradiusoutrange", cookparms.getCookTime(), 0);
2406  return result;
2407  }
2408  const UT_StringHolder & getInfluenceradiusattrib() const { return myInfluenceradiusattrib; }
2409  void setInfluenceradiusattrib(const UT_StringHolder & val) { myInfluenceradiusattrib = val; }
2411  {
2412  SOP_Node *thissop = cookparms.getNode();
2413  if (!thissop) return getInfluenceradiusattrib();
2415  OP_Utils::evalOpParm(result, thissop, "influenceradiusattrib", cookparms.getCookTime(), 0);
2416  return result;
2417  }
2418  const UT_StringHolder & getInfluenceradiustexture() const { return myInfluenceradiustexture; }
2419  void setInfluenceradiustexture(const UT_StringHolder & val) { myInfluenceradiustexture = val; }
2421  {
2422  SOP_Node *thissop = cookparms.getNode();
2423  if (!thissop) return getInfluenceradiustexture();
2425  OP_Utils::evalOpParm(result, thissop, "influenceradiustexture", cookparms.getCookTime(), 0);
2426  return result;
2427  }
2428  const UT_StringHolder & getInfluenceradiustextureprim() const { return myInfluenceradiustextureprim; }
2429  void setInfluenceradiustextureprim(const UT_StringHolder & val) { myInfluenceradiustextureprim = val; }
2431  {
2432  SOP_Node *thissop = cookparms.getNode();
2433  if (!thissop) return getInfluenceradiustextureprim();
2435  OP_Utils::evalOpParm(result, thissop, "influenceradiustextureprim", cookparms.getCookTime(), 0);
2436  return result;
2437  }
2438  fpreal64 getInfluencedecay() const { return myInfluencedecay; }
2439  void setInfluencedecay(fpreal64 val) { myInfluencedecay = val; }
2441  {
2442  SOP_Node *thissop = cookparms.getNode();
2443  if (!thissop) return getInfluencedecay();
2444  fpreal64 result;
2445  OP_Utils::evalOpParm(result, thissop, "influencedecay", cookparms.getCookTime(), 0);
2446  return result;
2447  }
2448  Influencedecayoverride getInfluencedecayoverride() const { return Influencedecayoverride(myInfluencedecayoverride); }
2449  void setInfluencedecayoverride(Influencedecayoverride val) { myInfluencedecayoverride = int64(val); }
2451  {
2452  SOP_Node *thissop = cookparms.getNode();
2453  if (!thissop) return getInfluencedecayoverride();
2454  int64 result;
2455  OP_Utils::evalOpParm(result, thissop, "influencedecayoverride", cookparms.getCookTime(), 0);
2456  return Influencedecayoverride(result);
2457  }
2458  int64 getInfluencedecayoptions() const { return myInfluencedecayoptions; }
2459  void setInfluencedecayoptions(int64 val) { myInfluencedecayoptions = val; }
2461  {
2462  SOP_Node *thissop = cookparms.getNode();
2463  if (!thissop) return getInfluencedecayoptions();
2464  int64 result;
2465  OP_Utils::evalOpParm(result, thissop, "influencedecayoptions", cookparms.getCookTime(), 0);
2466  return result;
2467  }
2468  UT_Vector2D getInfluencedecayinrange() const { return myInfluencedecayinrange; }
2469  void setInfluencedecayinrange(UT_Vector2D val) { myInfluencedecayinrange = val; }
2471  {
2472  SOP_Node *thissop = cookparms.getNode();
2473  if (!thissop) return getInfluencedecayinrange();
2475  OP_Utils::evalOpParm(result, thissop, "influencedecayinrange", cookparms.getCookTime(), 0);
2476  return result;
2477  }
2478  UT_Vector2D getInfluencedecayoutrange() const { return myInfluencedecayoutrange; }
2479  void setInfluencedecayoutrange(UT_Vector2D val) { myInfluencedecayoutrange = val; }
2481  {
2482  SOP_Node *thissop = cookparms.getNode();
2483  if (!thissop) return getInfluencedecayoutrange();
2485  OP_Utils::evalOpParm(result, thissop, "influencedecayoutrange", cookparms.getCookTime(), 0);
2486  return result;
2487  }
2488  const UT_StringHolder & getInfluencedecayattrib() const { return myInfluencedecayattrib; }
2489  void setInfluencedecayattrib(const UT_StringHolder & val) { myInfluencedecayattrib = val; }
2491  {
2492  SOP_Node *thissop = cookparms.getNode();
2493  if (!thissop) return getInfluencedecayattrib();
2495  OP_Utils::evalOpParm(result, thissop, "influencedecayattrib", cookparms.getCookTime(), 0);
2496  return result;
2497  }
2498  const UT_StringHolder & getInfluencedecaytexture() const { return myInfluencedecaytexture; }
2499  void setInfluencedecaytexture(const UT_StringHolder & val) { myInfluencedecaytexture = val; }
2501  {
2502  SOP_Node *thissop = cookparms.getNode();
2503  if (!thissop) return getInfluencedecaytexture();
2505  OP_Utils::evalOpParm(result, thissop, "influencedecaytexture", cookparms.getCookTime(), 0);
2506  return result;
2507  }
2508  const UT_StringHolder & getInfluencedecaytextureprim() const { return myInfluencedecaytextureprim; }
2509  void setInfluencedecaytextureprim(const UT_StringHolder & val) { myInfluencedecaytextureprim = val; }
2511  {
2512  SOP_Node *thissop = cookparms.getNode();
2513  if (!thissop) return getInfluencedecaytextureprim();
2515  OP_Utils::evalOpParm(result, thissop, "influencedecaytextureprim", cookparms.getCookTime(), 0);
2516  return result;
2517  }
2518  int64 getMaxguidecount() const { return myMaxguidecount; }
2519  void setMaxguidecount(int64 val) { myMaxguidecount = val; }
2521  {
2522  SOP_Node *thissop = cookparms.getNode();
2523  if (!thissop) return getMaxguidecount();
2524  int64 result;
2525  OP_Utils::evalOpParm(result, thissop, "maxguidecount", cookparms.getCookTime(), 0);
2526  return result;
2527  }
2528  Maxguidecountoverride getMaxguidecountoverride() const { return Maxguidecountoverride(myMaxguidecountoverride); }
2529  void setMaxguidecountoverride(Maxguidecountoverride val) { myMaxguidecountoverride = int64(val); }
2531  {
2532  SOP_Node *thissop = cookparms.getNode();
2533  if (!thissop) return getMaxguidecountoverride();
2534  int64 result;
2535  OP_Utils::evalOpParm(result, thissop, "maxguidecountoverride", cookparms.getCookTime(), 0);
2536  return Maxguidecountoverride(result);
2537  }
2538  int64 getMaxguidecountoptions() const { return myMaxguidecountoptions; }
2539  void setMaxguidecountoptions(int64 val) { myMaxguidecountoptions = val; }
2541  {
2542  SOP_Node *thissop = cookparms.getNode();
2543  if (!thissop) return getMaxguidecountoptions();
2544  int64 result;
2545  OP_Utils::evalOpParm(result, thissop, "maxguidecountoptions", cookparms.getCookTime(), 0);
2546  return result;
2547  }
2548  UT_Vector2D getMaxguidecountinrange() const { return myMaxguidecountinrange; }
2549  void setMaxguidecountinrange(UT_Vector2D val) { myMaxguidecountinrange = val; }
2551  {
2552  SOP_Node *thissop = cookparms.getNode();
2553  if (!thissop) return getMaxguidecountinrange();
2555  OP_Utils::evalOpParm(result, thissop, "maxguidecountinrange", cookparms.getCookTime(), 0);
2556  return result;
2557  }
2558  UT_Vector2D getMaxguidecountoutrange() const { return myMaxguidecountoutrange; }
2559  void setMaxguidecountoutrange(UT_Vector2D val) { myMaxguidecountoutrange = val; }
2561  {
2562  SOP_Node *thissop = cookparms.getNode();
2563  if (!thissop) return getMaxguidecountoutrange();
2565  OP_Utils::evalOpParm(result, thissop, "maxguidecountoutrange", cookparms.getCookTime(), 0);
2566  return result;
2567  }
2568  const UT_StringHolder & getMaxguidecountattrib() const { return myMaxguidecountattrib; }
2569  void setMaxguidecountattrib(const UT_StringHolder & val) { myMaxguidecountattrib = val; }
2571  {
2572  SOP_Node *thissop = cookparms.getNode();
2573  if (!thissop) return getMaxguidecountattrib();
2575  OP_Utils::evalOpParm(result, thissop, "maxguidecountattrib", cookparms.getCookTime(), 0);
2576  return result;
2577  }
2578  const UT_StringHolder & getMaxguidecounttexture() const { return myMaxguidecounttexture; }
2579  void setMaxguidecounttexture(const UT_StringHolder & val) { myMaxguidecounttexture = val; }
2581  {
2582  SOP_Node *thissop = cookparms.getNode();
2583  if (!thissop) return getMaxguidecounttexture();
2585  OP_Utils::evalOpParm(result, thissop, "maxguidecounttexture", cookparms.getCookTime(), 0);
2586  return result;
2587  }
2588  const UT_StringHolder & getMaxguidecounttextureprim() const { return myMaxguidecounttextureprim; }
2589  void setMaxguidecounttextureprim(const UT_StringHolder & val) { myMaxguidecounttextureprim = val; }
2591  {
2592  SOP_Node *thissop = cookparms.getNode();
2593  if (!thissop) return getMaxguidecounttextureprim();
2595  OP_Utils::evalOpParm(result, thissop, "maxguidecounttextureprim", cookparms.getCookTime(), 0);
2596  return result;
2597  }
2598  fpreal64 getMaxguideangle() const { return myMaxguideangle; }
2599  void setMaxguideangle(fpreal64 val) { myMaxguideangle = val; }
2601  {
2602  SOP_Node *thissop = cookparms.getNode();
2603  if (!thissop) return getMaxguideangle();
2604  fpreal64 result;
2605  OP_Utils::evalOpParm(result, thissop, "maxguideangle", cookparms.getCookTime(), 0);
2606  return result;
2607  }
2608  Maxguideangleoverride getMaxguideangleoverride() const { return Maxguideangleoverride(myMaxguideangleoverride); }
2609  void setMaxguideangleoverride(Maxguideangleoverride val) { myMaxguideangleoverride = int64(val); }
2611  {
2612  SOP_Node *thissop = cookparms.getNode();
2613  if (!thissop) return getMaxguideangleoverride();
2614  int64 result;
2615  OP_Utils::evalOpParm(result, thissop, "maxguideangleoverride", cookparms.getCookTime(), 0);
2616  return Maxguideangleoverride(result);
2617  }
2618  int64 getMaxguideangleoptions() const { return myMaxguideangleoptions; }
2619  void setMaxguideangleoptions(int64 val) { myMaxguideangleoptions = val; }
2621  {
2622  SOP_Node *thissop = cookparms.getNode();
2623  if (!thissop) return getMaxguideangleoptions();
2624  int64 result;
2625  OP_Utils::evalOpParm(result, thissop, "maxguideangleoptions", cookparms.getCookTime(), 0);
2626  return result;
2627  }
2628  UT_Vector2D getMaxguideangleinrange() const { return myMaxguideangleinrange; }
2629  void setMaxguideangleinrange(UT_Vector2D val) { myMaxguideangleinrange = val; }
2631  {
2632  SOP_Node *thissop = cookparms.getNode();
2633  if (!thissop) return getMaxguideangleinrange();
2635  OP_Utils::evalOpParm(result, thissop, "maxguideangleinrange", cookparms.getCookTime(), 0);
2636  return result;
2637  }
2638  UT_Vector2D getMaxguideangleoutrange() const { return myMaxguideangleoutrange; }
2639  void setMaxguideangleoutrange(UT_Vector2D val) { myMaxguideangleoutrange = val; }
2641  {
2642  SOP_Node *thissop = cookparms.getNode();
2643  if (!thissop) return getMaxguideangleoutrange();
2645  OP_Utils::evalOpParm(result, thissop, "maxguideangleoutrange", cookparms.getCookTime(), 0);
2646  return result;
2647  }
2648  const UT_StringHolder & getMaxguideangleattrib() const { return myMaxguideangleattrib; }
2649  void setMaxguideangleattrib(const UT_StringHolder & val) { myMaxguideangleattrib = val; }
2651  {
2652  SOP_Node *thissop = cookparms.getNode();
2653  if (!thissop) return getMaxguideangleattrib();
2655  OP_Utils::evalOpParm(result, thissop, "maxguideangleattrib", cookparms.getCookTime(), 0);
2656  return result;
2657  }
2658  const UT_StringHolder & getMaxguideangletexture() const { return myMaxguideangletexture; }
2659  void setMaxguideangletexture(const UT_StringHolder & val) { myMaxguideangletexture = val; }
2661  {
2662  SOP_Node *thissop = cookparms.getNode();
2663  if (!thissop) return getMaxguideangletexture();
2665  OP_Utils::evalOpParm(result, thissop, "maxguideangletexture", cookparms.getCookTime(), 0);
2666  return result;
2667  }
2668  const UT_StringHolder & getMaxguideangletextureprim() const { return myMaxguideangletextureprim; }
2669  void setMaxguideangletextureprim(const UT_StringHolder & val) { myMaxguideangletextureprim = val; }
2671  {
2672  SOP_Node *thissop = cookparms.getNode();
2673  if (!thissop) return getMaxguideangletextureprim();
2675  OP_Utils::evalOpParm(result, thissop, "maxguideangletextureprim", cookparms.getCookTime(), 0);
2676  return result;
2677  }
2678  fpreal64 getClumpcrossover() const { return myClumpcrossover; }
2679  void setClumpcrossover(fpreal64 val) { myClumpcrossover = val; }
2681  {
2682  SOP_Node *thissop = cookparms.getNode();
2683  if (!thissop) return getClumpcrossover();
2684  fpreal64 result;
2685  OP_Utils::evalOpParm(result, thissop, "clumpcrossover", cookparms.getCookTime(), 0);
2686  return result;
2687  }
2688  Clumpcrossoveroverride getClumpcrossoveroverride() const { return Clumpcrossoveroverride(myClumpcrossoveroverride); }
2689  void setClumpcrossoveroverride(Clumpcrossoveroverride val) { myClumpcrossoveroverride = int64(val); }
2691  {
2692  SOP_Node *thissop = cookparms.getNode();
2693  if (!thissop) return getClumpcrossoveroverride();
2694  int64 result;
2695  OP_Utils::evalOpParm(result, thissop, "clumpcrossoveroverride", cookparms.getCookTime(), 0);
2696  return Clumpcrossoveroverride(result);
2697  }
2698  int64 getClumpcrossoveroptions() const { return myClumpcrossoveroptions; }
2699  void setClumpcrossoveroptions(int64 val) { myClumpcrossoveroptions = val; }
2701  {
2702  SOP_Node *thissop = cookparms.getNode();
2703  if (!thissop) return getClumpcrossoveroptions();
2704  int64 result;
2705  OP_Utils::evalOpParm(result, thissop, "clumpcrossoveroptions", cookparms.getCookTime(), 0);
2706  return result;
2707  }
2708  UT_Vector2D getClumpcrossoverinrange() const { return myClumpcrossoverinrange; }
2709  void setClumpcrossoverinrange(UT_Vector2D val) { myClumpcrossoverinrange = val; }
2711  {
2712  SOP_Node *thissop = cookparms.getNode();
2713  if (!thissop) return getClumpcrossoverinrange();
2715  OP_Utils::evalOpParm(result, thissop, "clumpcrossoverinrange", cookparms.getCookTime(), 0);
2716  return result;
2717  }
2718  UT_Vector2D getClumpcrossoveroutrange() const { return myClumpcrossoveroutrange; }
2719  void setClumpcrossoveroutrange(UT_Vector2D val) { myClumpcrossoveroutrange = val; }
2721  {
2722  SOP_Node *thissop = cookparms.getNode();
2723  if (!thissop) return getClumpcrossoveroutrange();
2725  OP_Utils::evalOpParm(result, thissop, "clumpcrossoveroutrange", cookparms.getCookTime(), 0);
2726  return result;
2727  }
2728  const UT_StringHolder & getClumpcrossoverattrib() const { return myClumpcrossoverattrib; }
2729  void setClumpcrossoverattrib(const UT_StringHolder & val) { myClumpcrossoverattrib = val; }
2731  {
2732  SOP_Node *thissop = cookparms.getNode();
2733  if (!thissop) return getClumpcrossoverattrib();
2735  OP_Utils::evalOpParm(result, thissop, "clumpcrossoverattrib", cookparms.getCookTime(), 0);
2736  return result;
2737  }
2738  const UT_StringHolder & getClumpcrossovertexture() const { return myClumpcrossovertexture; }
2739  void setClumpcrossovertexture(const UT_StringHolder & val) { myClumpcrossovertexture = val; }
2741  {
2742  SOP_Node *thissop = cookparms.getNode();
2743  if (!thissop) return getClumpcrossovertexture();
2745  OP_Utils::evalOpParm(result, thissop, "clumpcrossovertexture", cookparms.getCookTime(), 0);
2746  return result;
2747  }
2748  const UT_StringHolder & getClumpcrossovertextureprim() const { return myClumpcrossovertextureprim; }
2749  void setClumpcrossovertextureprim(const UT_StringHolder & val) { myClumpcrossovertextureprim = val; }
2751  {
2752  SOP_Node *thissop = cookparms.getNode();
2753  if (!thissop) return getClumpcrossovertextureprim();
2755  OP_Utils::evalOpParm(result, thissop, "clumpcrossovertextureprim", cookparms.getCookTime(), 0);
2756  return result;
2757  }
2758  bool getGrowunguided() const { return myGrowunguided; }
2759  void setGrowunguided(bool val) { myGrowunguided = val; }
2760  bool opGrowunguided(const SOP_NodeVerb::CookParms &cookparms) const
2761  {
2762  SOP_Node *thissop = cookparms.getNode();
2763  if (!thissop) return getGrowunguided();
2764  bool result;
2765  OP_Utils::evalOpParm(result, thissop, "growunguided", cookparms.getCookTime(), 0);
2766  return result;
2767  }
2768  bool getUseinitdirattrib() const { return myUseinitdirattrib; }
2769  void setUseinitdirattrib(bool val) { myUseinitdirattrib = val; }
2770  bool opUseinitdirattrib(const SOP_NodeVerb::CookParms &cookparms) const
2771  {
2772  SOP_Node *thissop = cookparms.getNode();
2773  if (!thissop) return getUseinitdirattrib();
2774  bool result;
2775  OP_Utils::evalOpParm(result, thissop, "useinitdirattrib", cookparms.getCookTime(), 0);
2776  return result;
2777  }
2778  const UT_StringHolder & getInitdirattrib() const { return myInitdirattrib; }
2779  void setInitdirattrib(const UT_StringHolder & val) { myInitdirattrib = val; }
2781  {
2782  SOP_Node *thissop = cookparms.getNode();
2783  if (!thissop) return getInitdirattrib();
2785  OP_Utils::evalOpParm(result, thissop, "initdirattrib", cookparms.getCookTime(), 0);
2786  return result;
2787  }
2788  int64 getUnguidedsegments() const { return myUnguidedsegments; }
2789  void setUnguidedsegments(int64 val) { myUnguidedsegments = val; }
2791  {
2792  SOP_Node *thissop = cookparms.getNode();
2793  if (!thissop) return getUnguidedsegments();
2794  int64 result;
2795  OP_Utils::evalOpParm(result, thissop, "unguidedsegments", cookparms.getCookTime(), 0);
2796  return result;
2797  }
2798  fpreal64 getUnguidedlength() const { return myUnguidedlength; }
2799  void setUnguidedlength(fpreal64 val) { myUnguidedlength = val; }
2801  {
2802  SOP_Node *thissop = cookparms.getNode();
2803  if (!thissop) return getUnguidedlength();
2804  fpreal64 result;
2805  OP_Utils::evalOpParm(result, thissop, "unguidedlength", cookparms.getCookTime(), 0);
2806  return result;
2807  }
2808  Unguidedlengthoverride getUnguidedlengthoverride() const { return Unguidedlengthoverride(myUnguidedlengthoverride); }
2809  void setUnguidedlengthoverride(Unguidedlengthoverride val) { myUnguidedlengthoverride = int64(val); }
2811  {
2812  SOP_Node *thissop = cookparms.getNode();
2813  if (!thissop) return getUnguidedlengthoverride();
2814  int64 result;
2815  OP_Utils::evalOpParm(result, thissop, "unguidedlengthoverride", cookparms.getCookTime(), 0);
2816  return Unguidedlengthoverride(result);
2817  }
2818  int64 getUnguidedlengthoptions() const { return myUnguidedlengthoptions; }
2819  void setUnguidedlengthoptions(int64 val) { myUnguidedlengthoptions = val; }
2821  {
2822  SOP_Node *thissop = cookparms.getNode();
2823  if (!thissop) return getUnguidedlengthoptions();
2824  int64 result;
2825  OP_Utils::evalOpParm(result, thissop, "unguidedlengthoptions", cookparms.getCookTime(), 0);
2826  return result;
2827  }
2828  UT_Vector2D getUnguidedlengthinrange() const { return myUnguidedlengthinrange; }
2829  void setUnguidedlengthinrange(UT_Vector2D val) { myUnguidedlengthinrange = val; }
2831  {
2832  SOP_Node *thissop = cookparms.getNode();
2833  if (!thissop) return getUnguidedlengthinrange();
2835  OP_Utils::evalOpParm(result, thissop, "unguidedlengthinrange", cookparms.getCookTime(), 0);
2836  return result;
2837  }
2838  UT_Vector2D getUnguidedlengthoutrange() const { return myUnguidedlengthoutrange; }
2839  void setUnguidedlengthoutrange(UT_Vector2D val) { myUnguidedlengthoutrange = val; }
2841  {
2842  SOP_Node *thissop = cookparms.getNode();
2843  if (!thissop) return getUnguidedlengthoutrange();
2845  OP_Utils::evalOpParm(result, thissop, "unguidedlengthoutrange", cookparms.getCookTime(), 0);
2846  return result;
2847  }
2848  const UT_StringHolder & getUnguidedlengthattrib() const { return myUnguidedlengthattrib; }
2849  void setUnguidedlengthattrib(const UT_StringHolder & val) { myUnguidedlengthattrib = val; }
2851  {
2852  SOP_Node *thissop = cookparms.getNode();
2853  if (!thissop) return getUnguidedlengthattrib();
2855  OP_Utils::evalOpParm(result, thissop, "unguidedlengthattrib", cookparms.getCookTime(), 0);
2856  return result;
2857  }
2858  const UT_StringHolder & getUnguidedlengthtexture() const { return myUnguidedlengthtexture; }
2859  void setUnguidedlengthtexture(const UT_StringHolder & val) { myUnguidedlengthtexture = val; }
2861  {
2862  SOP_Node *thissop = cookparms.getNode();
2863  if (!thissop) return getUnguidedlengthtexture();
2865  OP_Utils::evalOpParm(result, thissop, "unguidedlengthtexture", cookparms.getCookTime(), 0);
2866  return result;
2867  }
2868  const UT_StringHolder & getUnguidedlengthtextureprim() const { return myUnguidedlengthtextureprim; }
2869  void setUnguidedlengthtextureprim(const UT_StringHolder & val) { myUnguidedlengthtextureprim = val; }
2871  {
2872  SOP_Node *thissop = cookparms.getNode();
2873  if (!thissop) return getUnguidedlengthtextureprim();
2875  OP_Utils::evalOpParm(result, thissop, "unguidedlengthtextureprim", cookparms.getCookTime(), 0);
2876  return result;
2877  }
2878  fpreal64 getUnguidedminlength() const { return myUnguidedminlength; }
2879  void setUnguidedminlength(fpreal64 val) { myUnguidedminlength = val; }
2881  {
2882  SOP_Node *thissop = cookparms.getNode();
2883  if (!thissop) return getUnguidedminlength();
2884  fpreal64 result;
2885  OP_Utils::evalOpParm(result, thissop, "unguidedminlength", cookparms.getCookTime(), 0);
2886  return result;
2887  }
2888  bool getCreateweightattribs() const { return myCreateweightattribs; }
2889  void setCreateweightattribs(bool val) { myCreateweightattribs = val; }
2890  bool opCreateweightattribs(const SOP_NodeVerb::CookParms &cookparms) const
2891  {
2892  SOP_Node *thissop = cookparms.getNode();
2893  if (!thissop) return getCreateweightattribs();
2894  bool result;
2895  OP_Utils::evalOpParm(result, thissop, "createweightattribs", cookparms.getCookTime(), 0);
2896  return result;
2897  }
2898  bool getCreaterestrootattrib() const { return myCreaterestrootattrib; }
2899  void setCreaterestrootattrib(bool val) { myCreaterestrootattrib = val; }
2901  {
2902  SOP_Node *thissop = cookparms.getNode();
2903  if (!thissop) return getCreaterestrootattrib();
2904  bool result;
2905  OP_Utils::evalOpParm(result, thissop, "createrestrootattrib", cookparms.getCookTime(), 0);
2906  return result;
2907  }
2908  const UT_StringHolder & getClumpidattrib() const { return myClumpidattrib; }
2909  void setClumpidattrib(const UT_StringHolder & val) { myClumpidattrib = val; }
2911  {
2912  SOP_Node *thissop = cookparms.getNode();
2913  if (!thissop) return getClumpidattrib();
2915  OP_Utils::evalOpParm(result, thissop, "clumpidattrib", cookparms.getCookTime(), 0);
2916  return result;
2917  }
2918  bool getOutputthicknessattrib() const { return myOutputthicknessattrib; }
2919  void setOutputthicknessattrib(bool val) { myOutputthicknessattrib = val; }
2921  {
2922  SOP_Node *thissop = cookparms.getNode();
2923  if (!thissop) return getOutputthicknessattrib();
2924  bool result;
2925  OP_Utils::evalOpParm(result, thissop, "outputthicknessattrib", cookparms.getCookTime(), 0);
2926  return result;
2927  }
2928  const UT_StringHolder & getThicknessattrib() const { return myThicknessattrib; }
2929  void setThicknessattrib(const UT_StringHolder & val) { myThicknessattrib = val; }
2931  {
2932  SOP_Node *thissop = cookparms.getNode();
2933  if (!thissop) return getThicknessattrib();
2935  OP_Utils::evalOpParm(result, thissop, "thicknessattrib", cookparms.getCookTime(), 0);
2936  return result;
2937  }
2938  fpreal64 getThickness() const { return myThickness; }
2939  void setThickness(fpreal64 val) { myThickness = val; }
2941  {
2942  SOP_Node *thissop = cookparms.getNode();
2943  if (!thissop) return getThickness();
2944  fpreal64 result;
2945  OP_Utils::evalOpParm(result, thissop, "thickness", cookparms.getCookTime(), 0);
2946  return result;
2947  }
2948  Thicknessoverride getThicknessoverride() const { return Thicknessoverride(myThicknessoverride); }
2949  void setThicknessoverride(Thicknessoverride val) { myThicknessoverride = int64(val); }
2951  {
2952  SOP_Node *thissop = cookparms.getNode();
2953  if (!thissop) return getThicknessoverride();
2954  int64 result;
2955  OP_Utils::evalOpParm(result, thissop, "thicknessoverride", cookparms.getCookTime(), 0);
2956  return Thicknessoverride(result);
2957  }
2958  const UT_StringHolder & getThicknessskinattrib() const { return myThicknessskinattrib; }
2959  void setThicknessskinattrib(const UT_StringHolder & val) { myThicknessskinattrib = val; }
2961  {
2962  SOP_Node *thissop = cookparms.getNode();
2963  if (!thissop) return getThicknessskinattrib();
2965  OP_Utils::evalOpParm(result, thissop, "thicknessskinattrib", cookparms.getCookTime(), 0);
2966  return result;
2967  }
2968  const UT_StringHolder & getThicknesstexture() const { return myThicknesstexture; }
2969  void setThicknesstexture(const UT_StringHolder & val) { myThicknesstexture = val; }
2971  {
2972  SOP_Node *thissop = cookparms.getNode();
2973  if (!thissop) return getThicknesstexture();
2975  OP_Utils::evalOpParm(result, thissop, "thicknesstexture", cookparms.getCookTime(), 0);
2976  return result;
2977  }
2978  UT_SharedPtr<UT_Ramp> getHairprofile() const { return myHairprofile; }
2979  void setHairprofile(UT_SharedPtr<UT_Ramp> val) { myHairprofile = val; }
2981  {
2982  SOP_Node *thissop = cookparms.getNode();
2983  if (!thissop) return getHairprofile();
2985  OP_Utils::evalOpParm(result, thissop, "hairprofile", cookparms.getCookTime(), 0);
2986  return result;
2987  }
2988  const UT_StringHolder & getPointattribs() const { return myPointattribs; }
2989  void setPointattribs(const UT_StringHolder & val) { myPointattribs = val; }
2991  {
2992  SOP_Node *thissop = cookparms.getNode();
2993  if (!thissop) return getPointattribs();
2995  OP_Utils::evalOpParm(result, thissop, "pointattribs", cookparms.getCookTime(), 0);
2996  return result;
2997  }
2998  const UT_StringHolder & getVertattribs() const { return myVertattribs; }
2999  void setVertattribs(const UT_StringHolder & val) { myVertattribs = val; }
3001  {
3002  SOP_Node *thissop = cookparms.getNode();
3003  if (!thissop) return getVertattribs();
3005  OP_Utils::evalOpParm(result, thissop, "vertattribs", cookparms.getCookTime(), 0);
3006  return result;
3007  }
3008  const UT_StringHolder & getPrimattribs() const { return myPrimattribs; }
3009  void setPrimattribs(const UT_StringHolder & val) { myPrimattribs = val; }
3011  {
3012  SOP_Node *thissop = cookparms.getNode();
3013  if (!thissop) return getPrimattribs();
3015  OP_Utils::evalOpParm(result, thissop, "primattribs", cookparms.getCookTime(), 0);
3016  return result;
3017  }
3018  const UT_StringHolder & getDetailattribs() const { return myDetailattribs; }
3019  void setDetailattribs(const UT_StringHolder & val) { myDetailattribs = val; }
3021  {
3022  SOP_Node *thissop = cookparms.getNode();
3023  if (!thissop) return getDetailattribs();
3025  OP_Utils::evalOpParm(result, thissop, "detailattribs", cookparms.getCookTime(), 0);
3026  return result;
3027  }
3028  const UT_StringHolder & getGuidepointattribs() const { return myGuidepointattribs; }
3029  void setGuidepointattribs(const UT_StringHolder & val) { myGuidepointattribs = val; }
3031  {
3032  SOP_Node *thissop = cookparms.getNode();
3033  if (!thissop) return getGuidepointattribs();
3035  OP_Utils::evalOpParm(result, thissop, "guidepointattribs", cookparms.getCookTime(), 0);
3036  return result;
3037  }
3038  const UT_StringHolder & getGuideprimattribs() const { return myGuideprimattribs; }
3039  void setGuideprimattribs(const UT_StringHolder & val) { myGuideprimattribs = val; }
3041  {
3042  SOP_Node *thissop = cookparms.getNode();
3043  if (!thissop) return getGuideprimattribs();
3045  OP_Utils::evalOpParm(result, thissop, "guideprimattribs", cookparms.getCookTime(), 0);
3046  return result;
3047  }
3048  const UT_Array<WeightArrayPairs> &getWeightArrayPairs() const { return myWeightArrayPairs; }
3049 void setWeightArrayPairs(const UT_Array<WeightArrayPairs> &val) { myWeightArrayPairs = val; }
3051  {
3052  SOP_Node *thissop = cookparms.getNode();
3053  if (!thissop) return getWeightArrayPairs().entries();
3054  exint result;
3055  OP_Utils::evalOpParm(result, thissop, "folder_weightarraypairs", cookparms.getCookTime(), 0);
3056  return result;
3057  }
3059  { return opinstWeightArrayPairs_guideindexattrib(cookparms, &_idx); }
3061  {
3062  SOP_Node *thissop = cookparms.getNode();
3063  if (!thissop) return (myWeightArrayPairs(_idx[0]).guideindexattrib);
3064  int _parmidx[2-1];
3065  _parmidx[1-1] = _idx[1-1] + 0;
3066 
3068  OP_Utils::evalOpParmInst(result, thissop, "guideindexattrib#", _parmidx, cookparms.getCookTime(), 0, 2-1);
3069  return (result);
3070  }
3072  { return opinstWeightArrayPairs_guideweightattrib(cookparms, &_idx); }
3074  {
3075  SOP_Node *thissop = cookparms.getNode();
3076  if (!thissop) return (myWeightArrayPairs(_idx[0]).guideweightattrib);
3077  int _parmidx[2-1];
3078  _parmidx[1-1] = _idx[1-1] + 0;
3079 
3081  OP_Utils::evalOpParmInst(result, thissop, "guideweightattrib#", _parmidx, cookparms.getCookTime(), 0, 2-1);
3082  return (result);
3083  }
3084 
3085 
3086 private:
3087  int64 myMode;
3088  UT_StringHolder myGroup;
3089  UT_StringHolder myUvattrib;
3090  bool myLimittobbox;
3091  UT_Vector3D myBBoxSize;
3092  UT_Vector3D myBBoxCenter;
3093  bool myPrune;
3094  fpreal64 myPruningratio;
3095  bool myPrunethicken;
3096  bool myUseguides;
3097  bool myUniformguidesegments;
3098  bool mySkininterp;
3099  bool myUseInterpMesh;
3100  UT_StringHolder mySkininterpguidesattrib;
3101  UT_StringHolder mySkininterpweightsattrib;
3102  int64 mySkinguidemode;
3103  int64 myGuideblendmethod;
3104  UT_StringHolder myGuidegroup;
3105  fpreal64 myInfluenceradius;
3106  int64 myInfluenceradiusoverride;
3107  int64 myInfluenceradiusoptions;
3108  UT_Vector2D myInfluenceradiusinrange;
3109  UT_Vector2D myInfluenceradiusoutrange;
3110  UT_StringHolder myInfluenceradiusattrib;
3111  UT_StringHolder myInfluenceradiustexture;
3112  UT_StringHolder myInfluenceradiustextureprim;
3113  fpreal64 myInfluencedecay;
3114  int64 myInfluencedecayoverride;
3115  int64 myInfluencedecayoptions;
3116  UT_Vector2D myInfluencedecayinrange;
3117  UT_Vector2D myInfluencedecayoutrange;
3118  UT_StringHolder myInfluencedecayattrib;
3119  UT_StringHolder myInfluencedecaytexture;
3120  UT_StringHolder myInfluencedecaytextureprim;
3121  int64 myMaxguidecount;
3122  int64 myMaxguidecountoverride;
3123  int64 myMaxguidecountoptions;
3124  UT_Vector2D myMaxguidecountinrange;
3125  UT_Vector2D myMaxguidecountoutrange;
3126  UT_StringHolder myMaxguidecountattrib;
3127  UT_StringHolder myMaxguidecounttexture;
3128  UT_StringHolder myMaxguidecounttextureprim;
3129  fpreal64 myMaxguideangle;
3130  int64 myMaxguideangleoverride;
3131  int64 myMaxguideangleoptions;
3132  UT_Vector2D myMaxguideangleinrange;
3133  UT_Vector2D myMaxguideangleoutrange;
3134  UT_StringHolder myMaxguideangleattrib;
3135  UT_StringHolder myMaxguideangletexture;
3136  UT_StringHolder myMaxguideangletextureprim;
3137  fpreal64 myClumpcrossover;
3138  int64 myClumpcrossoveroverride;
3139  int64 myClumpcrossoveroptions;
3140  UT_Vector2D myClumpcrossoverinrange;
3141  UT_Vector2D myClumpcrossoveroutrange;
3142  UT_StringHolder myClumpcrossoverattrib;
3143  UT_StringHolder myClumpcrossovertexture;
3144  UT_StringHolder myClumpcrossovertextureprim;
3145  bool myGrowunguided;
3146  bool myUseinitdirattrib;
3147  UT_StringHolder myInitdirattrib;
3148  int64 myUnguidedsegments;
3149  fpreal64 myUnguidedlength;
3150  int64 myUnguidedlengthoverride;
3151  int64 myUnguidedlengthoptions;
3152  UT_Vector2D myUnguidedlengthinrange;
3153  UT_Vector2D myUnguidedlengthoutrange;
3154  UT_StringHolder myUnguidedlengthattrib;
3155  UT_StringHolder myUnguidedlengthtexture;
3156  UT_StringHolder myUnguidedlengthtextureprim;
3157  fpreal64 myUnguidedminlength;
3158  bool myCreateweightattribs;
3159  bool myCreaterestrootattrib;
3160  UT_StringHolder myClumpidattrib;
3161  bool myOutputthicknessattrib;
3162  UT_StringHolder myThicknessattrib;
3163  fpreal64 myThickness;
3164  int64 myThicknessoverride;
3165  UT_StringHolder myThicknessskinattrib;
3166  UT_StringHolder myThicknesstexture;
3167  UT_SharedPtr<UT_Ramp> myHairprofile;
3168  UT_StringHolder myPointattribs;
3169  UT_StringHolder myVertattribs;
3170  UT_StringHolder myPrimattribs;
3171  UT_StringHolder myDetailattribs;
3172  UT_StringHolder myGuidepointattribs;
3173  UT_StringHolder myGuideprimattribs;
3174  UT_Array<WeightArrayPairs> myWeightArrayPairs;
3175 
3176 };
Influenceradiusoverride getInfluenceradiusoverride() const
UT_StringHolder opVertattribs(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getUnguidedlength() const
UT_Vector2D opMaxguidecountoutrange(const SOP_NodeVerb::CookParms &cookparms) const
type
Definition: core.h:556
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
Thicknessoverride getThicknessoverride() const
int64 opMaxguideangleoptions(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opInfluenceradiustexture(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D getClumpcrossoverinrange() const
UT_Vector2D opInfluenceradiusoutrange(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getPointattribs() const
static void saveData(std::ostream &os, fpreal64 v)
void setThicknessoverride(Thicknessoverride val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
void setClumpcrossovertextureprim(const UT_StringHolder &val)
const UT_StringHolder & getPrimattribs() const
static void saveData(std::ostream &os, UT_Vector4D v)
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glcorearb.h:2540
void setMaxguideangleinrange(UT_Vector2D val)
void setUnguidedlength(fpreal64 val)
bool opUseInterpMesh(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opPruningratio(const SOP_NodeVerb::CookParms &cookparms) const
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
void setMaxguidecountoptions(int64 val)
void setGuidegroup(const UT_StringHolder &val)
int64 getMaxguideangleoptions() const
int64 opClumpcrossoveroptions(const SOP_NodeVerb::CookParms &cookparms) const
const char * getNestParmName(TempIndex fieldnum) const override
Maxguideangleoverride getMaxguideangleoverride() const
void setMaxguidecount(int64 val)
const UT_StringHolder & getInfluenceradiusattrib() const
void setThicknesstexture(const UT_StringHolder &val)
static UT_SharedPtr< UT_Ramp > buildFromDefault(const char *def)
Returns a ramp constructed from the canonical default strings.
static void loadData(UT_IStream &is, UT_Vector4I &v)
UT_StringHolder opMaxguidecountattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setMaxguideangleoutrange(UT_Vector2D val)
UT_StringHolder createString(const UT_Array< WeightArrayPairs > &list) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void setCreaterestrootattrib(bool val)
UT_StringHolder opDetailattribs(const SOP_NodeVerb::CookParms &cookparms) const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
const UT_StringHolder & getMaxguidecounttextureprim() const
void setClumpcrossoveroutrange(UT_Vector2D val)
bool getUniformguidesegments() const
void
Definition: png.h:1083
const UT_StringHolder & getDetailattribs() const
void setInfluenceradiusoptions(int64 val)
exint bread(int32 *buffer, exint asize=1)
GLboolean * data
Definition: glcorearb.h:131
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:493
const GLdouble * v
Definition: glcorearb.h:837
UT_StringHolder opGuidegroup(const SOP_NodeVerb::CookParms &cookparms) const
void setMaxguidecounttextureprim(const UT_StringHolder &val)
void setClumpcrossoverattrib(const UT_StringHolder &val)
fpreal64 getPruningratio() const
fpreal getTime() const
Definition: OP_Context.h:63
static void saveData(std::ostream &os, UT_Matrix2D v)
fpreal64 getMaxguideangle() const
UT_Vector2T< fpreal64 > UT_Vector2D
void copyFrom(const OP_NodeParms *src) override
const UT_StringHolder & getInfluenceradiustexture() const
GLsizei const GLfloat * value
Definition: glcorearb.h:824
fpreal64 getInfluenceradius() const
int64 getUnguidedsegments() const
UT_StringHolder opMaxguidecounttexture(const SOP_NodeVerb::CookParms &cookparms) const
void setMaxguideangleattrib(const UT_StringHolder &val)
UT_StringHolder opUnguidedlengthtextureprim(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D opInfluenceradiusinrange(const SOP_NodeVerb::CookParms &cookparms) const
void setMaxguidecountattrib(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Vector3D &v)
UT_String makeQuotedString(char delimiter='\'', bool escape_nonprinting=false) const
void setGroup(const UT_StringHolder &val)
const OP_Context & context() const
Definition: OP_NodeParms.h:97
void setInitdirattrib(const UT_StringHolder &val)
UT_StringHolder opMaxguidecounttextureprim(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
void setSkininterpguidesattrib(const UT_StringHolder &val)
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
void setUnguidedlengthinrange(UT_Vector2D val)
int64 opMaxguidecountoptions(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D getInfluenceradiusoutrange() const
SYS_FORCE_INLINE const char * buffer() const
static void loadData(UT_IStream &is, bool &v)
GLdouble s
Definition: glad.h:3009
GLuint GLsizei GLsizei * length
Definition: glcorearb.h:795
const UT_StringHolder & getInfluencedecayattrib() const
void setClumpcrossoveroptions(int64 val)
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
An output stream object that owns its own string buffer storage.
const UT_StringHolder & getThicknessskinattrib() const
Skinguidemode getSkinguidemode() const
UT_Vector2D opMaxguidecountinrange(const SOP_NodeVerb::CookParms &cookparms) const
Maxguidecountoverride getMaxguidecountoverride() const
void setInfluencedecaytexture(const UT_StringHolder &val)
UT_StringHolder opInfluencedecayattrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector2D &v)
UT_Vector2D opUnguidedlengthoutrange(const SOP_NodeVerb::CookParms &cookparms) const
**But if you need a result
Definition: thread.h:622
void setMaxguideangletexture(const UT_StringHolder &val)
bool load(UT_IStream &is)
bool operator!=(const SOP_HairGenCoreParms &src) const
bool getCreaterestrootattrib() const
void setInfluenceradiusoverride(Influenceradiusoverride val)
UT_StringHolder opThicknesstexture(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getInfluencedecaytexture() const
const UT_StringHolder & getMaxguidecountattrib() const
void save(std::ostream &os) const
UT_StringHolder opUnguidedlengthattrib(const SOP_NodeVerb::CookParms &cookparms) const
exint nodeIdx() const
Definition: OP_NodeParms.h:95
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
Guideblendmethod opGuideblendmethod(const SOP_NodeVerb::CookParms &cookparms) const
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
const UT_StringHolder & getThicknessattrib() const
void setMaxguideangleoverride(Maxguideangleoverride val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
int64 opInfluencedecayoptions(const SOP_NodeVerb::CookParms &cookparms) const
bool opOutputthicknessattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setUnguidedsegments(int64 val)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
static void loadData(UT_IStream &is, UT_Vector3I &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
bool operator==(const SOP_HairGenCoreParms &src) const
exint opWeightArrayPairs(const SOP_NodeVerb::CookParms &cookparms) const
void setClumpcrossoverinrange(UT_Vector2D val)
GLuint GLsizei const GLuint const GLintptr * offsets
Definition: glcorearb.h:2621
double fpreal64
Definition: SYS_Types.h:201
UT_StringHolder opMaxguideangletextureprim(const SOP_NodeVerb::CookParms &cookparms) const
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: APEX_Include.h:55
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
void setSkininterpweightsattrib(const UT_StringHolder &val)
fpreal64 getInfluencedecay() const
void setUvattrib(const UT_StringHolder &val)
const UT_StringHolder & getGroup() const
UT_StringHolder opUnguidedlengthtexture(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opClumpcrossoverattrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D opBBoxCenter(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
bool getCreateweightattribs() const
static void saveData(std::ostream &os, PRM_DataItemHandle s)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
int64 getInfluencedecayoptions() const
void setUnguidedlengthoverride(Unguidedlengthoverride val)
void setGuideprimattribs(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
void setMaxguideangletextureprim(const UT_StringHolder &val)
void setPrimattribs(const UT_StringHolder &val)
const UT_StringHolder & getMaxguidecounttexture() const
const UT_StringHolder & getClumpcrossoverattrib() const
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void setUnguidedminlength(fpreal64 val)
Maxguidecountoverride opMaxguidecountoverride(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
void setHairprofile(UT_SharedPtr< UT_Ramp > val)
Influenceradiusoverride opInfluenceradiusoverride(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opMaxguideangleattrib(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opMaxguideangle(const SOP_NodeVerb::CookParms &cookparms) const
void setClumpidattrib(const UT_StringHolder &val)
exint length() const
fpreal64 opUnguidedminlength(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, fpreal64 &v)
UT_Vector3D getBBoxSize() const
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
UT_SharedPtr< UT_Ramp > opHairprofile(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
Clumpcrossoveroverride opClumpcrossoveroverride(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opThicknessskinattrib(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opInfluenceradius(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getUnguidedlengthattrib() const
bool operator!=(const WeightArrayPairs &src) const
UT_StringHolder opClumpcrossovertexture(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getInfluencedecaytextureprim() const
UT_StringHolder opInfluencedecaytextureprim(const SOP_NodeVerb::CookParms &cookparms) const
Clumpcrossoveroverride getClumpcrossoveroverride() const
bool getOutputthicknessattrib() const
exint read(bool *array, exint sz=1)
Definition: UT_IStream.h:276
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
bool opCreateweightattribs(const SOP_NodeVerb::CookParms &cookparms) const
void setThickness(fpreal64 val)
const UT_StringHolder & getVertattribs() const
UT_Vector2D getMaxguideangleinrange() const
static void loadData(UT_IStream &is, UT_Vector4D &v)
void setInfluencedecayoverride(Influencedecayoverride val)
void setGuidepointattribs(const UT_StringHolder &val)
const UT_StringHolder & getInitdirattrib() const
virtual void evalOpParmInst(int64 &v, NodeIdx node, const char *parmname, const int *inst, const int *offsets, fpreal time, DEP_MicroNode *depnode, int nestlevel=1) const =0
const UT_StringHolder & getSkininterpguidesattrib() const
const UT_StringHolder & getMaxguideangletexture() const
UT_Vector2D getInfluenceradiusinrange() const
bool opPrunethicken(const SOP_NodeVerb::CookParms &cookparms) const
void setOutputthicknessattrib(bool val)
long long int64
Definition: SYS_Types.h:116
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
UT_StringHolder opThicknessattrib(const SOP_NodeVerb::CookParms &cookparms) const
Skinguidemode opSkinguidemode(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix4D &v)
void setMaxguidecountoverride(Maxguidecountoverride val)
void setInfluencedecayattrib(const UT_StringHolder &val)
const UT_StringHolder & getMaxguideangletextureprim() const
UT_Vector3T< fpreal64 > UT_Vector3D
int64 getUnguidedlengthoptions() const
UT_Vector2D opInfluencedecayoutrange(const SOP_NodeVerb::CookParms &cookparms) const
void setUnguidedlengthoutrange(UT_Vector2D val)
UT_StringHolder opWeightArrayPairs_guideindexattrib(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
const UT_StringHolder & getClumpcrossovertexture() const
bool opUniformguidesegments(const SOP_NodeVerb::CookParms &cookparms) const
void setUnguidedlengthtexture(const UT_StringHolder &val)
void setMaxguidecounttexture(const UT_StringHolder &val)
UT_StringHolder opSkininterpweightsattrib(const SOP_NodeVerb::CookParms &cookparms) const
Influencedecayoverride opInfluencedecayoverride(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D getInfluencedecayoutrange() const
static void saveData(std::ostream &os, bool v)
bool opSkininterp(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getUnguidedminlength() const
int64 opUnguidedsegments(const SOP_NodeVerb::CookParms &cookparms) const
void setGuideblendmethod(Guideblendmethod val)
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
fpreal64 opThickness(const SOP_NodeVerb::CookParms &cookparms) const
void setInfluenceradiusinrange(UT_Vector2D val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
Mode opMode(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
SYS_FORCE_INLINE void strcat(const char *src)
UT_StringHolder opinstWeightArrayPairs_guideweightattrib(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:303
SYS_FORCE_INLINE UT_StringHolder getToken(Mode enum_value)
UT_StringHolder opClumpidattrib(const SOP_NodeVerb::CookParms &cookparms) const
Guideblendmethod getGuideblendmethod() const
UT_Vector3D getBBoxCenter() const
UT_Vector2D opClumpcrossoverinrange(const SOP_NodeVerb::CookParms &cookparms) const
GT_API const UT_StringHolder version
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
static void saveData(std::ostream &os, int64 v)
exint entries() const
Alias of size(). size() is preferred.
Definition: UT_Array.h:655
bool opCreaterestrootattrib(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getUvattrib() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
void setVertattribs(const UT_StringHolder &val)
void setMaxguideangleoptions(int64 val)
UT_Vector2D getUnguidedlengthoutrange() const
UT_Vector2D opInfluencedecayinrange(const SOP_NodeVerb::CookParms &cookparms) const
void setMaxguidecountoutrange(UT_Vector2D val)
static void loadData(UT_IStream &is, int64 &v)
const UT_StringHolder & getClumpidattrib() const
UT_StringHolder opPrimattribs(const SOP_NodeVerb::CookParms &cookparms) const
int64 opUnguidedlengthoptions(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D opBBoxSize(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getThickness() const
void setMaxguideangle(fpreal64 val)
void setDetailattribs(const UT_StringHolder &val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
UT_StringHolder opInfluencedecaytexture(const SOP_NodeVerb::CookParms &cookparms) const
void setWeightArrayPairs(const UT_Array< WeightArrayPairs > &val)
int64 opInfluenceradiusoptions(const SOP_NodeVerb::CookParms &cookparms) const
bool opPrune(const SOP_NodeVerb::CookParms &cookparms) const
ParmType getNestParmType(TempIndex fieldnum) const override
UT_Vector2D getMaxguidecountoutrange() const
void setUniformguidesegments(bool val)
fpreal64 fpreal
Definition: SYS_Types.h:278
Maxguideangleoverride opMaxguideangleoverride(const SOP_NodeVerb::CookParms &cookparms) const
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
const UT_StringHolder & getMaxguideangleattrib() const
Unguidedlengthoverride getUnguidedlengthoverride() const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void setUnguidedlengthtextureprim(const UT_StringHolder &val)
LeafData & operator=(const LeafData &)=delete
Utility class for containing a color ramp.
Definition: UT_Ramp.h:96
void setBBoxSize(UT_Vector3D val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
static void loadData(UT_IStream &is, UT_Vector2I &v)
bool isParmColorRamp(exint idx) const override
void setClumpcrossoveroverride(Clumpcrossoveroverride val)
int64 getMaxguidecountoptions() const
UT_StringHolder opUvattrib(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
SYS_FORCE_INLINE void append(char character)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
GLuint GLfloat * val
Definition: glcorearb.h:1608
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:294
Thicknessoverride opThicknessoverride(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D getMaxguideangleoutrange() const
#define SOP_API
Definition: SOP_API.h:10
static void saveData(std::ostream &os, UT_Vector2D v)
const UT_StringHolder & getGuideprimattribs() const
void setInfluenceradius(fpreal64 val)
void setInfluencedecayoptions(int64 val)
bool operator==(const WeightArrayPairs &src) const
UT_StringHolder opinstWeightArrayPairs_guideindexattrib(const SOP_NodeVerb::CookParms &cookparms, const int *_idx) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
Unguidedlengthoverride opUnguidedlengthoverride(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getSkininterpweightsattrib() const
fpreal64 opUnguidedlength(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opInfluenceradiustextureprim(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getGuidepointattribs() const
UT_StringHolder opMaxguideangletexture(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D getUnguidedlengthinrange() const
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:372
UT_Vector2D opMaxguideangleinrange(const SOP_NodeVerb::CookParms &cookparms) const
bool opUseguides(const SOP_NodeVerb::CookParms &cookparms) const
void setUnguidedlengthattrib(const UT_StringHolder &val)
static void saveData(std::ostream &os, UT_Matrix3D v)
void setBBoxCenter(UT_Vector3D val)
bool opGrowunguided(const SOP_NodeVerb::CookParms &cookparms) const
const char * findChar(int c) const
Definition: UT_String.h:1406
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
UT_StringHolder opInitdirattrib(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getClumpcrossover() const
void setPruningratio(fpreal64 val)
UT_Vector2D getMaxguidecountinrange() const
void setPointattribs(const UT_StringHolder &val)
exint getNestNumParms(TempIndex idx) const override
void setInfluencedecay(fpreal64 val)
const UT_StringHolder & getThicknesstexture() const
void setInfluencedecayoutrange(UT_Vector2D val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
UT_StringHolder opSkininterpguidesattrib(const SOP_NodeVerb::CookParms &cookparms) const
GLboolean r
Definition: glcorearb.h:1222
void setClumpcrossovertexture(const UT_StringHolder &val)
void setInfluencedecaytextureprim(const UT_StringHolder &val)
bool opUseinitdirattrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opGuidepointattribs(const SOP_NodeVerb::CookParms &cookparms) const
void setInfluencedecayinrange(UT_Vector2D val)
UT_StringHolder opWeightArrayPairs_guideweightattrib(const SOP_NodeVerb::CookParms &cookparms, int _idx) const
void setUnguidedlengthoptions(int64 val)
void setUseinitdirattrib(bool val)
static void saveData(std::ostream &os, UT_Vector3D v)
UT_StringHolder opPointattribs(const SOP_NodeVerb::CookParms &cookparms) const
int64 getClumpcrossoveroptions() const
UT_Vector2D getClumpcrossoveroutrange() const
void setThicknessattrib(const UT_StringHolder &val)
fpreal64 opClumpcrossover(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
static void loadData(UT_IStream &is, UT_StringHolder &v)
void setSkinguidemode(Skinguidemode val)
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
UT_SharedPtr< UT_Ramp > getHairprofile() const
UT_StringHolder opGuideprimattribs(const SOP_NodeVerb::CookParms &cookparms) const
int64 opMaxguidecount(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D opUnguidedlengthinrange(const SOP_NodeVerb::CookParms &cookparms) const
const UT_Array< WeightArrayPairs > & getWeightArrayPairs() const
void setCreateweightattribs(bool val)
void setClumpcrossover(fpreal64 val)
const UT_StringHolder & getUnguidedlengthtexture() const
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
Influencedecayoverride getInfluencedecayoverride() const
void setMaxguidecountinrange(UT_Vector2D val)
fpreal64 opInfluencedecay(const SOP_NodeVerb::CookParms &cookparms) const
void loadFromOpSubclass(const LoadParms &loadparms) override
UT_Vector2D getInfluencedecayinrange() const
void setThicknessskinattrib(const UT_StringHolder &val)
const UT_StringHolder & getInfluenceradiustextureprim() const
int64 getInfluenceradiusoptions() const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
static void saveData(std::ostream &os, UT_StringHolder s)
void setInfluenceradiusoutrange(UT_Vector2D val)
static void saveData(std::ostream &os, UT_Matrix4D v)
SYS_FORCE_INLINE bool isstring() const
UT_Vector2D opMaxguideangleoutrange(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getClumpcrossovertextureprim() const
UT_StringHolder opInfluenceradiusattrib(const SOP_NodeVerb::CookParms &cookparms) const
bool opLimittobbox(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
UT_StringHolder opClumpcrossovertextureprim(const SOP_NodeVerb::CookParms &cookparms) const
void setInfluenceradiusattrib(const UT_StringHolder &val)
const UT_StringHolder & getUnguidedlengthtextureprim() const
static void loadData(UT_IStream &is, UT_Matrix2D &v)
void setInfluenceradiustextureprim(const UT_StringHolder &val)
GLenum src
Definition: glcorearb.h:1793
const UT_StringHolder & getGuidegroup() const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
void setInfluenceradiustexture(const UT_StringHolder &val)
UT_Vector2D opClumpcrossoveroutrange(const SOP_NodeVerb::CookParms &cookparms) const