HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_Scatter-2.0.proto.h
Go to the documentation of this file.
1 /* Automagically Generated by generate_proto.py
2  * Do not Edit
3  */
4 #pragma once
5 
6 #include <SOP/SOP_API.h>
7 #include <SOP/SOP_NodeVerb.h>
8 #include <SOP/SOP_GraphProxy.h>
9 
10 #include <OP/OP_Utils.h>
11 #include <PRM/PRM_Parm.h>
12 #include <UT/UT_IStream.h>
13 #include <UT/UT_NTStreamUtil.h>
14 #include <UT/UT_Ramp.h>
15 #include <UT/UT_SharedPtr.h>
16 #include <UT/UT_StringHolder.h>
17 #include <UT/UT_StringStream.h>
18 #include <UT/UT_VectorTypes.h>
19 #include <UT/UT_EnvControl.h>
20 #include <SYS/SYS_Types.h>
21 
22 class DEP_MicroNode;
23 namespace SOP_Scatter_2_0Enums
24 {
25  enum class GenerateBy
26  {
27  BYDENSITY = 0,
30  };
31 
33  getToken(GenerateBy enum_value)
34  {
35  using namespace UT::Literal;
36  switch (enum_value) {
37  case GenerateBy::BYDENSITY: return "bydensity"_sh;
38  case GenerateBy::COUNTPERPRIMITIVE: return "countperprimitive"_sh;
39  case GenerateBy::TEXTURESPACE: return "texturespace"_sh;
40  default: UT_ASSERT(false); return ""_sh;
41  }
42  }
43 
44 }
45 
46 
48 {
49 public:
50  static int version() { return 1; }
51 
53  {
54  myGroup = ""_UTsh;
55  myGenerateBy = 0;
56  myIndepVoxel = false;
57  myForceTotal = true;
58  myNpts = 1000;
59  myDensityScale = 10;
60  myUseDensityAttrib = false;
61  myDensityAttrib = "density"_UTsh;
62  myUseAreaAttrib = false;
63  myAreaAttrib = "area"_UTsh;
64  myUseAreaForVolumes = false;
65  myUseDensityTexture = false;
66  myDensityTexture = "default.pic"_UTsh;
67  myUVAttrib = "uv"_UTsh;
68  myCountPerPrimAttrib = "count"_UTsh;
69  myUseEmergencyLimit = true;
70  myEmergencyLimit = 1e+06;
71  mySeed = 0;
72  myOverridePrimSeed = false;
73  myPrimSeedAttrib = "primid"_UTsh;
74  myRandomizeOrder = true;
75  myRelaxPoints = true;
76  myRelaxIterations = 10;
77  myUseGeometricNormals = false;
78  myUsePrimNumAttrib = false;
79  myPrimNumAttrib = "sourceprim"_UTsh;
80  myUsePrimUVWAttrib = false;
81  myPrimUVWAttrib = "sourceprimuv"_UTsh;
82  myUseOutputDensityAttrib = false;
83  myOutputDensityAttrib = "density"_UTsh;
84  myUseOutputRadiusAttrib = false;
85  myOutputRadiusAttrib = "pscale"_UTsh;
86  myUseOutputIdAttrib = false;
87  myOutputIdAttrib = "id"_UTsh;
88  myRadiusInTextureSpace = false;
89  myPointAttribs = "*"_UTsh;
90  myVertAttribs = "N uv*"_UTsh;
91  myPrimAttribs = ""_UTsh;
92  myDetailAttribs = ""_UTsh;
93  myDetailAttribsAsDetail = ""_UTsh;
94  myScaleRadiiBy = 1;
95  myUseMaxRadius = true;
96  myMaxRadius = 10;
97 
98  }
99 
100  explicit SOP_Scatter_2_0Parms(const SOP_Scatter_2_0Parms &) = default;
102  SOP_Scatter_2_0Parms(SOP_Scatter_2_0Parms &&) noexcept = default;
103  SOP_Scatter_2_0Parms &operator=(SOP_Scatter_2_0Parms &&) noexcept = default;
104 
105  ~SOP_Scatter_2_0Parms() override {}
106 
108  {
109  if (myGroup != src.myGroup) return false;
110  if (myGenerateBy != src.myGenerateBy) return false;
111  if (myIndepVoxel != src.myIndepVoxel) return false;
112  if (myForceTotal != src.myForceTotal) return false;
113  if (myNpts != src.myNpts) return false;
114  if (myDensityScale != src.myDensityScale) return false;
115  if (myUseDensityAttrib != src.myUseDensityAttrib) return false;
116  if (myDensityAttrib != src.myDensityAttrib) return false;
117  if (myUseAreaAttrib != src.myUseAreaAttrib) return false;
118  if (myAreaAttrib != src.myAreaAttrib) return false;
119  if (myUseAreaForVolumes != src.myUseAreaForVolumes) return false;
120  if (myUseDensityTexture != src.myUseDensityTexture) return false;
121  if (myDensityTexture != src.myDensityTexture) return false;
122  if (myUVAttrib != src.myUVAttrib) return false;
123  if (myCountPerPrimAttrib != src.myCountPerPrimAttrib) return false;
124  if (myUseEmergencyLimit != src.myUseEmergencyLimit) return false;
125  if (myEmergencyLimit != src.myEmergencyLimit) return false;
126  if (mySeed != src.mySeed) return false;
127  if (myOverridePrimSeed != src.myOverridePrimSeed) return false;
128  if (myPrimSeedAttrib != src.myPrimSeedAttrib) return false;
129  if (myRandomizeOrder != src.myRandomizeOrder) return false;
130  if (myRelaxPoints != src.myRelaxPoints) return false;
131  if (myRelaxIterations != src.myRelaxIterations) return false;
132  if (myUseGeometricNormals != src.myUseGeometricNormals) return false;
133  if (myUsePrimNumAttrib != src.myUsePrimNumAttrib) return false;
134  if (myPrimNumAttrib != src.myPrimNumAttrib) return false;
135  if (myUsePrimUVWAttrib != src.myUsePrimUVWAttrib) return false;
136  if (myPrimUVWAttrib != src.myPrimUVWAttrib) return false;
137  if (myUseOutputDensityAttrib != src.myUseOutputDensityAttrib) return false;
138  if (myOutputDensityAttrib != src.myOutputDensityAttrib) return false;
139  if (myUseOutputRadiusAttrib != src.myUseOutputRadiusAttrib) return false;
140  if (myOutputRadiusAttrib != src.myOutputRadiusAttrib) return false;
141  if (myUseOutputIdAttrib != src.myUseOutputIdAttrib) return false;
142  if (myOutputIdAttrib != src.myOutputIdAttrib) return false;
143  if (myRadiusInTextureSpace != src.myRadiusInTextureSpace) return false;
144  if (myPointAttribs != src.myPointAttribs) return false;
145  if (myVertAttribs != src.myVertAttribs) return false;
146  if (myPrimAttribs != src.myPrimAttribs) return false;
147  if (myDetailAttribs != src.myDetailAttribs) return false;
148  if (myDetailAttribsAsDetail != src.myDetailAttribsAsDetail) return false;
149  if (myScaleRadiiBy != src.myScaleRadiiBy) return false;
150  if (myUseMaxRadius != src.myUseMaxRadius) return false;
151  if (myMaxRadius != src.myMaxRadius) return false;
152 
153  return true;
154  }
156  {
157  return !operator==(src);
158  }
160 
161 
162 
163  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
164  {
165  myGroup = ""_UTsh;
166  if (true)
167  graph->evalOpParm(myGroup, nodeidx, "group", time, 0);
168  myGenerateBy = 0;
169  if (true)
170  graph->evalOpParm(myGenerateBy, nodeidx, "generateby", time, 0);
171  myIndepVoxel = false;
172  if (true && ( (true&&!(((int64(getGenerateBy())!=0)))) ) )
173  graph->evalOpParm(myIndepVoxel, nodeidx, "indepvoxel", time, 0);
174  myForceTotal = true;
175  if (true && ( (true&&!(((int64(getGenerateBy())!=0))||((getIndepVoxel()==1)))) ) )
176  graph->evalOpParm(myForceTotal, nodeidx, "forcetotal", time, 0);
177  myNpts = 1000;
178  if (true && ( (true&&!(((int64(getGenerateBy())!=0))||((getForceTotal()==0))||((getIndepVoxel()==1)))) ) )
179  graph->evalOpParm(myNpts, nodeidx, "npts", time, 0);
180  myDensityScale = 10;
181  if (true && ( (true&&!(((int64(getGenerateBy())==1))||((int64(getGenerateBy())==0)&&(getForceTotal()==1)&&(getIndepVoxel()==0)))) ) )
182  graph->evalOpParm(myDensityScale, nodeidx, "densityscale", time, 0);
183  myUseDensityAttrib = false;
184  if (true && ( (true&&!(((int64(getGenerateBy())!=0)))) ) )
185  graph->evalOpParm(myUseDensityAttrib, nodeidx, "usedensityattrib", time, 0);
186  myDensityAttrib = "density"_UTsh;
187  if (true && ( (true&&!(((int64(getGenerateBy())!=0))||((getUseDensityAttrib()==0)))) ) )
188  graph->evalOpParm(myDensityAttrib, nodeidx, "densityattrib", time, 0);
189  myUseAreaAttrib = false;
190  if (true && ( (true&&!(((int64(getGenerateBy())!=0)))) ) )
191  graph->evalOpParm(myUseAreaAttrib, nodeidx, "useareaattrib", time, 0);
192  myAreaAttrib = "area"_UTsh;
193  if (true && ( (true&&!(((int64(getGenerateBy())!=0))||((getUseAreaAttrib()==0)))) ) )
194  graph->evalOpParm(myAreaAttrib, nodeidx, "areaattrib", time, 0);
195  myUseAreaForVolumes = false;
196  if (true && ( (true&&!(((int64(getGenerateBy())!=0))||((getForceTotal()==1)&&(getIndepVoxel()==0)))) ) )
197  graph->evalOpParm(myUseAreaForVolumes, nodeidx, "useareaforvolumes", time, 0);
198  myUseDensityTexture = false;
199  if (true && ( (true&&!(((int64(getGenerateBy())!=2)))) ) )
200  graph->evalOpParm(myUseDensityTexture, nodeidx, "usedensitytexture", time, 0);
201  myDensityTexture = "default.pic"_UTsh;
202  if (true && ( (true&&!(((int64(getGenerateBy())!=2))||((getUseDensityTexture()==0)))) ) )
203  graph->evalOpParm(myDensityTexture, nodeidx, "densitytexture", time, 0);
204  myUVAttrib = "uv"_UTsh;
205  if (true && ( (true&&!(((int64(getGenerateBy())!=2)))) ) )
206  graph->evalOpParm(myUVAttrib, nodeidx, "uvattrib", time, 0);
207  myCountPerPrimAttrib = "count"_UTsh;
208  if (true && ( (true&&!(((int64(getGenerateBy())!=1)))) ) )
209  graph->evalOpParm(myCountPerPrimAttrib, nodeidx, "primcountattrib", time, 0);
210  myUseEmergencyLimit = true;
211  if (true)
212  graph->evalOpParm(myUseEmergencyLimit, nodeidx, "useemergencylimit", time, 0);
213  myEmergencyLimit = 1e+06;
214  if (true && ( (true&&!(((getUseEmergencyLimit()==0)))) ) )
215  graph->evalOpParm(myEmergencyLimit, nodeidx, "emergencylimit", time, 0);
216  mySeed = 0;
217  if (true)
218  graph->evalOpParm(mySeed, nodeidx, "seed", time, 0);
219  myOverridePrimSeed = false;
220  if (true && ( (true&&!(((int64(getGenerateBy())==2)))) ) )
221  graph->evalOpParm(myOverridePrimSeed, nodeidx, "overrideprimseed", time, 0);
222  myPrimSeedAttrib = "primid"_UTsh;
223  if (true && ( (true&&!(((int64(getGenerateBy())==2))||((getOverridePrimSeed()==0)))) ) )
224  graph->evalOpParm(myPrimSeedAttrib, nodeidx, "primseedattrib", time, 0);
225  myRandomizeOrder = true;
226  if (true)
227  graph->evalOpParm(myRandomizeOrder, nodeidx, "randomizeorder", time, 0);
228  myRelaxPoints = true;
229  if (true)
230  graph->evalOpParm(myRelaxPoints, nodeidx, "relaxpoints", time, 0);
231  myRelaxIterations = 10;
232  if (true && ( (true&&!(((getRelaxPoints()==0)))) ) )
233  graph->evalOpParm(myRelaxIterations, nodeidx, "relaxiterations", time, 0);
234  myUseGeometricNormals = false;
235  if (true && ( (true&&!(((getRelaxPoints()==0)))) ) )
236  graph->evalOpParm(myUseGeometricNormals, nodeidx, "usegeometricnormals", time, 0);
237  myUsePrimNumAttrib = false;
238  if (true)
239  graph->evalOpParm(myUsePrimNumAttrib, nodeidx, "useprimnumattrib", time, 0);
240  myPrimNumAttrib = "sourceprim"_UTsh;
241  if (true && ( (true&&!(((getUsePrimNumAttrib()==0)))) ) )
242  graph->evalOpParm(myPrimNumAttrib, nodeidx, "primnumattrib", time, 0);
243  myUsePrimUVWAttrib = false;
244  if (true)
245  graph->evalOpParm(myUsePrimUVWAttrib, nodeidx, "useprimuvwattrib", time, 0);
246  myPrimUVWAttrib = "sourceprimuv"_UTsh;
247  if (true && ( (true&&!(((getUsePrimUVWAttrib()==0)))) ) )
248  graph->evalOpParm(myPrimUVWAttrib, nodeidx, "primuvwattrib", time, 0);
249  myUseOutputDensityAttrib = false;
250  if (true)
251  graph->evalOpParm(myUseOutputDensityAttrib, nodeidx, "useoutputdensityattrib", time, 0);
252  myOutputDensityAttrib = "density"_UTsh;
253  if (true && ( (true&&!(((getUseOutputDensityAttrib()==0)))) ) )
254  graph->evalOpParm(myOutputDensityAttrib, nodeidx, "outputdensityattrib", time, 0);
255  myUseOutputRadiusAttrib = false;
256  if (true)
257  graph->evalOpParm(myUseOutputRadiusAttrib, nodeidx, "useoutputradiusattrib", time, 0);
258  myOutputRadiusAttrib = "pscale"_UTsh;
259  if (true && ( (true&&!(((getUseOutputRadiusAttrib()==0)))) ) )
260  graph->evalOpParm(myOutputRadiusAttrib, nodeidx, "outputradiusattrib", time, 0);
261  myUseOutputIdAttrib = false;
262  if (true)
263  graph->evalOpParm(myUseOutputIdAttrib, nodeidx, "useoutputidattrib", time, 0);
264  myOutputIdAttrib = "id"_UTsh;
265  if (true && ( (true&&!(((getUseOutputIdAttrib()==0)))) ) )
266  graph->evalOpParm(myOutputIdAttrib, nodeidx, "outputidattrib", time, 0);
267  myRadiusInTextureSpace = false;
268  if (true && ( (true&&!(((int64(getGenerateBy())!=2))||((getUseOutputRadiusAttrib()==0)&&(getUseOutputDensityAttrib()==0)))) ) )
269  graph->evalOpParm(myRadiusInTextureSpace, nodeidx, "radiusintexturespace", time, 0);
270  myPointAttribs = "*"_UTsh;
271  if (true)
272  graph->evalOpParm(myPointAttribs, nodeidx, "pointattribs", time, 0);
273  myVertAttribs = "N uv*"_UTsh;
274  if (true)
275  graph->evalOpParm(myVertAttribs, nodeidx, "vertattribs", time, 0);
276  myPrimAttribs = ""_UTsh;
277  if (true)
278  graph->evalOpParm(myPrimAttribs, nodeidx, "primattribs", time, 0);
279  myDetailAttribs = ""_UTsh;
280  if (true)
281  graph->evalOpParm(myDetailAttribs, nodeidx, "detailattribs", time, 0);
282  myDetailAttribsAsDetail = ""_UTsh;
283  if (true)
284  graph->evalOpParm(myDetailAttribsAsDetail, nodeidx, "detailattribsasdetail", time, 0);
285  myScaleRadiiBy = 1;
286  if (true && ( (true&&!(((getRelaxPoints()==0)&&(getUseOutputRadiusAttrib()==0)))) ) )
287  graph->evalOpParm(myScaleRadiiBy, nodeidx, "scaleradiiby", time, 0);
288  myUseMaxRadius = true;
289  if (true && ( (true&&!(((getRelaxPoints()==0)&&(getUseOutputRadiusAttrib()==0)))) ) )
290  graph->evalOpParm(myUseMaxRadius, nodeidx, "usemaxradius", time, 0);
291  myMaxRadius = 10;
292  if (true && ( (true&&!(((getRelaxPoints()==0)&&(getUseOutputRadiusAttrib()==0))||((getUseMaxRadius()==0)))) ) )
293  graph->evalOpParm(myMaxRadius, nodeidx, "maxradius", time, 0);
294 
295  }
296 
297 
298  void loadFromOpSubclass(const LoadParms &loadparms) override
299  {
300  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
301  }
302 
303 
304  void copyFrom(const OP_NodeParms *src) override
305  {
306  *this = *((const SOP_Scatter_2_0Parms *)src);
307  }
308 
309  template <typename T>
310  void
311  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
312  {
313  if (idx.size() < 1)
314  return;
315  UT_ASSERT(idx.size() == instance.size()+1);
316  if (idx.size() != instance.size()+1)
317  return;
318  switch (idx[0])
319  {
320  case 0:
321  coerceValue(value, myGroup);
322  break;
323  case 1:
324  coerceValue(value, myGenerateBy);
325  break;
326  case 2:
327  coerceValue(value, myIndepVoxel);
328  break;
329  case 3:
330  coerceValue(value, myForceTotal);
331  break;
332  case 4:
333  coerceValue(value, myNpts);
334  break;
335  case 5:
336  coerceValue(value, myDensityScale);
337  break;
338  case 6:
339  coerceValue(value, myUseDensityAttrib);
340  break;
341  case 7:
342  coerceValue(value, myDensityAttrib);
343  break;
344  case 8:
345  coerceValue(value, myUseAreaAttrib);
346  break;
347  case 9:
348  coerceValue(value, myAreaAttrib);
349  break;
350  case 10:
351  coerceValue(value, myUseAreaForVolumes);
352  break;
353  case 11:
354  coerceValue(value, myUseDensityTexture);
355  break;
356  case 12:
357  coerceValue(value, myDensityTexture);
358  break;
359  case 13:
360  coerceValue(value, myUVAttrib);
361  break;
362  case 14:
363  coerceValue(value, myCountPerPrimAttrib);
364  break;
365  case 15:
366  coerceValue(value, myUseEmergencyLimit);
367  break;
368  case 16:
369  coerceValue(value, myEmergencyLimit);
370  break;
371  case 17:
372  coerceValue(value, mySeed);
373  break;
374  case 18:
375  coerceValue(value, myOverridePrimSeed);
376  break;
377  case 19:
378  coerceValue(value, myPrimSeedAttrib);
379  break;
380  case 20:
381  coerceValue(value, myRandomizeOrder);
382  break;
383  case 21:
384  coerceValue(value, myRelaxPoints);
385  break;
386  case 22:
387  coerceValue(value, myRelaxIterations);
388  break;
389  case 23:
390  coerceValue(value, myUseGeometricNormals);
391  break;
392  case 24:
393  coerceValue(value, myUsePrimNumAttrib);
394  break;
395  case 25:
396  coerceValue(value, myPrimNumAttrib);
397  break;
398  case 26:
399  coerceValue(value, myUsePrimUVWAttrib);
400  break;
401  case 27:
402  coerceValue(value, myPrimUVWAttrib);
403  break;
404  case 28:
405  coerceValue(value, myUseOutputDensityAttrib);
406  break;
407  case 29:
408  coerceValue(value, myOutputDensityAttrib);
409  break;
410  case 30:
411  coerceValue(value, myUseOutputRadiusAttrib);
412  break;
413  case 31:
414  coerceValue(value, myOutputRadiusAttrib);
415  break;
416  case 32:
417  coerceValue(value, myUseOutputIdAttrib);
418  break;
419  case 33:
420  coerceValue(value, myOutputIdAttrib);
421  break;
422  case 34:
423  coerceValue(value, myRadiusInTextureSpace);
424  break;
425  case 35:
426  coerceValue(value, myPointAttribs);
427  break;
428  case 36:
429  coerceValue(value, myVertAttribs);
430  break;
431  case 37:
432  coerceValue(value, myPrimAttribs);
433  break;
434  case 38:
435  coerceValue(value, myDetailAttribs);
436  break;
437  case 39:
438  coerceValue(value, myDetailAttribsAsDetail);
439  break;
440  case 40:
441  coerceValue(value, myScaleRadiiBy);
442  break;
443  case 41:
444  coerceValue(value, myUseMaxRadius);
445  break;
446  case 42:
447  coerceValue(value, myMaxRadius);
448  break;
449 
450  }
451  }
452 
453  bool isParmColorRamp(exint idx) const override
454  {
455  switch (idx)
456  {
457 
458  }
459  return false;
460  }
461 
462  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
463  { doGetParmValue(idx, instance, value); }
464  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
465  { doGetParmValue(idx, instance, value); }
466  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
467  { doGetParmValue(idx, instance, value); }
468  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
469  { doGetParmValue(idx, instance, value); }
470  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
471  { doGetParmValue(idx, instance, value); }
472  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
473  { doGetParmValue(idx, instance, value); }
474  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
475  { doGetParmValue(idx, instance, value); }
476  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
477  { doGetParmValue(idx, instance, value); }
478  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
479  { doGetParmValue(idx, instance, value); }
480  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
481  { doGetParmValue(idx, instance, value); }
482  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
483  { doGetParmValue(idx, instance, value); }
484 
485  template <typename T>
486  void
487  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
488  {
489  if (idx.size() < 1)
490  return;
491  UT_ASSERT(idx.size() == instance.size()+1);
492  if (idx.size() != instance.size()+1)
493  return;
494  switch (idx[0])
495  {
496  case 0:
497  coerceValue(myGroup, ( ( value ) ));
498  break;
499  case 1:
500  coerceValue(myGenerateBy, clampMinValue(0, clampMaxValue(2, value ) ));
501  break;
502  case 2:
503  coerceValue(myIndepVoxel, ( ( value ) ));
504  break;
505  case 3:
506  coerceValue(myForceTotal, ( ( value ) ));
507  break;
508  case 4:
509  coerceValue(myNpts, ( ( value ) ));
510  break;
511  case 5:
512  coerceValue(myDensityScale, ( ( value ) ));
513  break;
514  case 6:
515  coerceValue(myUseDensityAttrib, ( ( value ) ));
516  break;
517  case 7:
518  coerceValue(myDensityAttrib, ( ( value ) ));
519  break;
520  case 8:
521  coerceValue(myUseAreaAttrib, ( ( value ) ));
522  break;
523  case 9:
524  coerceValue(myAreaAttrib, ( ( value ) ));
525  break;
526  case 10:
527  coerceValue(myUseAreaForVolumes, ( ( value ) ));
528  break;
529  case 11:
530  coerceValue(myUseDensityTexture, ( ( value ) ));
531  break;
532  case 12:
533  coerceValue(myDensityTexture, ( ( value ) ));
534  break;
535  case 13:
536  coerceValue(myUVAttrib, ( ( value ) ));
537  break;
538  case 14:
539  coerceValue(myCountPerPrimAttrib, ( ( value ) ));
540  break;
541  case 15:
542  coerceValue(myUseEmergencyLimit, ( ( value ) ));
543  break;
544  case 16:
545  coerceValue(myEmergencyLimit, ( ( value ) ));
546  break;
547  case 17:
548  coerceValue(mySeed, ( ( value ) ));
549  break;
550  case 18:
551  coerceValue(myOverridePrimSeed, ( ( value ) ));
552  break;
553  case 19:
554  coerceValue(myPrimSeedAttrib, ( ( value ) ));
555  break;
556  case 20:
557  coerceValue(myRandomizeOrder, ( ( value ) ));
558  break;
559  case 21:
560  coerceValue(myRelaxPoints, ( ( value ) ));
561  break;
562  case 22:
563  coerceValue(myRelaxIterations, clampMinValue(0, ( value ) ));
564  break;
565  case 23:
566  coerceValue(myUseGeometricNormals, ( ( value ) ));
567  break;
568  case 24:
569  coerceValue(myUsePrimNumAttrib, ( ( value ) ));
570  break;
571  case 25:
572  coerceValue(myPrimNumAttrib, ( ( value ) ));
573  break;
574  case 26:
575  coerceValue(myUsePrimUVWAttrib, ( ( value ) ));
576  break;
577  case 27:
578  coerceValue(myPrimUVWAttrib, ( ( value ) ));
579  break;
580  case 28:
581  coerceValue(myUseOutputDensityAttrib, ( ( value ) ));
582  break;
583  case 29:
584  coerceValue(myOutputDensityAttrib, ( ( value ) ));
585  break;
586  case 30:
587  coerceValue(myUseOutputRadiusAttrib, ( ( value ) ));
588  break;
589  case 31:
590  coerceValue(myOutputRadiusAttrib, ( ( value ) ));
591  break;
592  case 32:
593  coerceValue(myUseOutputIdAttrib, ( ( value ) ));
594  break;
595  case 33:
596  coerceValue(myOutputIdAttrib, ( ( value ) ));
597  break;
598  case 34:
599  coerceValue(myRadiusInTextureSpace, ( ( value ) ));
600  break;
601  case 35:
602  coerceValue(myPointAttribs, ( ( value ) ));
603  break;
604  case 36:
605  coerceValue(myVertAttribs, ( ( value ) ));
606  break;
607  case 37:
608  coerceValue(myPrimAttribs, ( ( value ) ));
609  break;
610  case 38:
611  coerceValue(myDetailAttribs, ( ( value ) ));
612  break;
613  case 39:
614  coerceValue(myDetailAttribsAsDetail, ( ( value ) ));
615  break;
616  case 40:
617  coerceValue(myScaleRadiiBy, clampMinValue(0, ( value ) ));
618  break;
619  case 41:
620  coerceValue(myUseMaxRadius, ( ( value ) ));
621  break;
622  case 42:
623  coerceValue(myMaxRadius, clampMinValue(0, ( value ) ));
624  break;
625 
626  }
627  }
628 
629  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
630  { doSetParmValue(idx, instance, value); }
631  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
632  { doSetParmValue(idx, instance, value); }
633  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
634  { doSetParmValue(idx, instance, value); }
635  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
636  { doSetParmValue(idx, instance, value); }
637  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
638  { doSetParmValue(idx, instance, value); }
639  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
640  { doSetParmValue(idx, instance, value); }
641  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
642  { doSetParmValue(idx, instance, value); }
643  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
644  { doSetParmValue(idx, instance, value); }
645  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
646  { doSetParmValue(idx, instance, value); }
647  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
648  { doSetParmValue(idx, instance, value); }
649  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
650  { doSetParmValue(idx, instance, value); }
651 
652  exint getNestNumParms(TempIndex idx) const override
653  {
654  if (idx.size() == 0)
655  return 43;
656  switch (idx[0])
657  {
658 
659  }
660  // Invalid
661  return 0;
662  }
663 
664  const char *getNestParmName(TempIndex fieldnum) const override
665  {
666  if (fieldnum.size() < 1)
667  return 0;
668  switch (fieldnum[0])
669  {
670  case 0:
671  return "group";
672  case 1:
673  return "generateby";
674  case 2:
675  return "indepvoxel";
676  case 3:
677  return "forcetotal";
678  case 4:
679  return "npts";
680  case 5:
681  return "densityscale";
682  case 6:
683  return "usedensityattrib";
684  case 7:
685  return "densityattrib";
686  case 8:
687  return "useareaattrib";
688  case 9:
689  return "areaattrib";
690  case 10:
691  return "useareaforvolumes";
692  case 11:
693  return "usedensitytexture";
694  case 12:
695  return "densitytexture";
696  case 13:
697  return "uvattrib";
698  case 14:
699  return "primcountattrib";
700  case 15:
701  return "useemergencylimit";
702  case 16:
703  return "emergencylimit";
704  case 17:
705  return "seed";
706  case 18:
707  return "overrideprimseed";
708  case 19:
709  return "primseedattrib";
710  case 20:
711  return "randomizeorder";
712  case 21:
713  return "relaxpoints";
714  case 22:
715  return "relaxiterations";
716  case 23:
717  return "usegeometricnormals";
718  case 24:
719  return "useprimnumattrib";
720  case 25:
721  return "primnumattrib";
722  case 26:
723  return "useprimuvwattrib";
724  case 27:
725  return "primuvwattrib";
726  case 28:
727  return "useoutputdensityattrib";
728  case 29:
729  return "outputdensityattrib";
730  case 30:
731  return "useoutputradiusattrib";
732  case 31:
733  return "outputradiusattrib";
734  case 32:
735  return "useoutputidattrib";
736  case 33:
737  return "outputidattrib";
738  case 34:
739  return "radiusintexturespace";
740  case 35:
741  return "pointattribs";
742  case 36:
743  return "vertattribs";
744  case 37:
745  return "primattribs";
746  case 38:
747  return "detailattribs";
748  case 39:
749  return "detailattribsasdetail";
750  case 40:
751  return "scaleradiiby";
752  case 41:
753  return "usemaxradius";
754  case 42:
755  return "maxradius";
756 
757  }
758  return 0;
759  }
760 
761  ParmType getNestParmType(TempIndex fieldnum) const override
762  {
763  if (fieldnum.size() < 1)
764  return PARM_UNSUPPORTED;
765  switch (fieldnum[0])
766  {
767  case 0:
768  return PARM_STRING;
769  case 1:
770  return PARM_INTEGER;
771  case 2:
772  return PARM_INTEGER;
773  case 3:
774  return PARM_INTEGER;
775  case 4:
776  return PARM_INTEGER;
777  case 5:
778  return PARM_FLOAT;
779  case 6:
780  return PARM_INTEGER;
781  case 7:
782  return PARM_STRING;
783  case 8:
784  return PARM_INTEGER;
785  case 9:
786  return PARM_STRING;
787  case 10:
788  return PARM_INTEGER;
789  case 11:
790  return PARM_INTEGER;
791  case 12:
792  return PARM_STRING;
793  case 13:
794  return PARM_STRING;
795  case 14:
796  return PARM_STRING;
797  case 15:
798  return PARM_INTEGER;
799  case 16:
800  return PARM_INTEGER;
801  case 17:
802  return PARM_FLOAT;
803  case 18:
804  return PARM_INTEGER;
805  case 19:
806  return PARM_STRING;
807  case 20:
808  return PARM_INTEGER;
809  case 21:
810  return PARM_INTEGER;
811  case 22:
812  return PARM_INTEGER;
813  case 23:
814  return PARM_INTEGER;
815  case 24:
816  return PARM_INTEGER;
817  case 25:
818  return PARM_STRING;
819  case 26:
820  return PARM_INTEGER;
821  case 27:
822  return PARM_STRING;
823  case 28:
824  return PARM_INTEGER;
825  case 29:
826  return PARM_STRING;
827  case 30:
828  return PARM_INTEGER;
829  case 31:
830  return PARM_STRING;
831  case 32:
832  return PARM_INTEGER;
833  case 33:
834  return PARM_STRING;
835  case 34:
836  return PARM_INTEGER;
837  case 35:
838  return PARM_STRING;
839  case 36:
840  return PARM_STRING;
841  case 37:
842  return PARM_STRING;
843  case 38:
844  return PARM_STRING;
845  case 39:
846  return PARM_STRING;
847  case 40:
848  return PARM_FLOAT;
849  case 41:
850  return PARM_INTEGER;
851  case 42:
852  return PARM_FLOAT;
853 
854  }
855  return PARM_UNSUPPORTED;
856  }
857 
858  // Boiler plate to load individual types.
859  static void loadData(UT_IStream &is, int64 &v)
860  { is.bread(&v, 1); }
861  static void loadData(UT_IStream &is, bool &v)
862  { int64 iv; is.bread(&iv, 1); v = iv; }
863  static void loadData(UT_IStream &is, fpreal64 &v)
864  { is.bread<fpreal64>(&v, 1); }
865  static void loadData(UT_IStream &is, UT_Vector2D &v)
866  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
867  static void loadData(UT_IStream &is, UT_Vector3D &v)
868  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
869  is.bread<fpreal64>(&v.z(), 1); }
870  static void loadData(UT_IStream &is, UT_Vector4D &v)
871  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
872  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
873  static void loadData(UT_IStream &is, UT_Matrix2D &v)
874  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
875  static void loadData(UT_IStream &is, UT_Matrix3D &v)
876  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
877  static void loadData(UT_IStream &is, UT_Matrix4D &v)
878  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
879  static void loadData(UT_IStream &is, UT_Vector2I &v)
880  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
881  static void loadData(UT_IStream &is, UT_Vector3I &v)
882  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
883  is.bread<int64>(&v.z(), 1); }
884  static void loadData(UT_IStream &is, UT_Vector4I &v)
885  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
886  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
888  { is.bread(v); }
890  { UT_StringHolder rampdata;
891  loadData(is, rampdata);
892  if (rampdata.isstring())
893  {
894  v.reset(new UT_Ramp());
895  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
896  v->load(istr);
897  }
898  else v.reset();
899  }
902  loadData(is, data);
903  if (data.isstring())
904  {
905  // Find the data type.
906  const char *colon = UT_StringWrap(data).findChar(':');
907  if (colon)
908  {
909  int typelen = colon - data.buffer();
911  type.strncpy(data.buffer(), typelen);
912  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
913 
914  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
915  }
916  }
917  else v.reset();
918  }
919 
920  static void saveData(std::ostream &os, int64 v)
921  { UTwrite(os, &v); }
922  static void saveData(std::ostream &os, bool v)
923  { int64 iv = v; UTwrite(os, &iv); }
924  static void saveData(std::ostream &os, fpreal64 v)
925  { UTwrite<fpreal64>(os, &v); }
926  static void saveData(std::ostream &os, UT_Vector2D v)
927  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
928  static void saveData(std::ostream &os, UT_Vector3D v)
929  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
930  UTwrite<fpreal64>(os, &v.z()); }
931  static void saveData(std::ostream &os, UT_Vector4D v)
932  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
933  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
934  static void saveData(std::ostream &os, UT_Matrix2D v)
936  static void saveData(std::ostream &os, UT_Matrix3D v)
938  static void saveData(std::ostream &os, UT_Matrix4D v)
940  static void saveData(std::ostream &os, UT_StringHolder s)
941  { UT_StringWrap(s).saveBinary(os); }
942  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
944  UT_OStringStream ostr;
945  if (s) s->save(ostr);
946  result = ostr.str();
947  saveData(os, result);
948  }
949  static void saveData(std::ostream &os, PRM_DataItemHandle s)
951  UT_OStringStream ostr;
952  if (s)
953  {
954  ostr << s->getDataTypeToken();
955  ostr << ":";
956  s->saveBinary(ostr);
957  }
958  result = ostr.str();
959  saveData(os, result);
960  }
961 
962 
963  void save(std::ostream &os) const
964  {
965  int32 v = version();
966  UTwrite(os, &v);
967  saveData(os, myGroup);
968  saveData(os, myGenerateBy);
969  saveData(os, myIndepVoxel);
970  saveData(os, myForceTotal);
971  saveData(os, myNpts);
972  saveData(os, myDensityScale);
973  saveData(os, myUseDensityAttrib);
974  saveData(os, myDensityAttrib);
975  saveData(os, myUseAreaAttrib);
976  saveData(os, myAreaAttrib);
977  saveData(os, myUseAreaForVolumes);
978  saveData(os, myUseDensityTexture);
979  saveData(os, myDensityTexture);
980  saveData(os, myUVAttrib);
981  saveData(os, myCountPerPrimAttrib);
982  saveData(os, myUseEmergencyLimit);
983  saveData(os, myEmergencyLimit);
984  saveData(os, mySeed);
985  saveData(os, myOverridePrimSeed);
986  saveData(os, myPrimSeedAttrib);
987  saveData(os, myRandomizeOrder);
988  saveData(os, myRelaxPoints);
989  saveData(os, myRelaxIterations);
990  saveData(os, myUseGeometricNormals);
991  saveData(os, myUsePrimNumAttrib);
992  saveData(os, myPrimNumAttrib);
993  saveData(os, myUsePrimUVWAttrib);
994  saveData(os, myPrimUVWAttrib);
995  saveData(os, myUseOutputDensityAttrib);
996  saveData(os, myOutputDensityAttrib);
997  saveData(os, myUseOutputRadiusAttrib);
998  saveData(os, myOutputRadiusAttrib);
999  saveData(os, myUseOutputIdAttrib);
1000  saveData(os, myOutputIdAttrib);
1001  saveData(os, myRadiusInTextureSpace);
1002  saveData(os, myPointAttribs);
1003  saveData(os, myVertAttribs);
1004  saveData(os, myPrimAttribs);
1005  saveData(os, myDetailAttribs);
1006  saveData(os, myDetailAttribsAsDetail);
1007  saveData(os, myScaleRadiiBy);
1008  saveData(os, myUseMaxRadius);
1009  saveData(os, myMaxRadius);
1010 
1011  }
1012 
1013  bool load(UT_IStream &is)
1014  {
1015  int32 v;
1016  is.bread(&v, 1);
1017  if (version() != v)
1018  {
1019  // Fail incompatible versions
1020  return false;
1021  }
1022  loadData(is, myGroup);
1023  loadData(is, myGenerateBy);
1024  loadData(is, myIndepVoxel);
1025  loadData(is, myForceTotal);
1026  loadData(is, myNpts);
1027  loadData(is, myDensityScale);
1028  loadData(is, myUseDensityAttrib);
1029  loadData(is, myDensityAttrib);
1030  loadData(is, myUseAreaAttrib);
1031  loadData(is, myAreaAttrib);
1032  loadData(is, myUseAreaForVolumes);
1033  loadData(is, myUseDensityTexture);
1034  loadData(is, myDensityTexture);
1035  loadData(is, myUVAttrib);
1036  loadData(is, myCountPerPrimAttrib);
1037  loadData(is, myUseEmergencyLimit);
1038  loadData(is, myEmergencyLimit);
1039  loadData(is, mySeed);
1040  loadData(is, myOverridePrimSeed);
1041  loadData(is, myPrimSeedAttrib);
1042  loadData(is, myRandomizeOrder);
1043  loadData(is, myRelaxPoints);
1044  loadData(is, myRelaxIterations);
1045  loadData(is, myUseGeometricNormals);
1046  loadData(is, myUsePrimNumAttrib);
1047  loadData(is, myPrimNumAttrib);
1048  loadData(is, myUsePrimUVWAttrib);
1049  loadData(is, myPrimUVWAttrib);
1050  loadData(is, myUseOutputDensityAttrib);
1051  loadData(is, myOutputDensityAttrib);
1052  loadData(is, myUseOutputRadiusAttrib);
1053  loadData(is, myOutputRadiusAttrib);
1054  loadData(is, myUseOutputIdAttrib);
1055  loadData(is, myOutputIdAttrib);
1056  loadData(is, myRadiusInTextureSpace);
1057  loadData(is, myPointAttribs);
1058  loadData(is, myVertAttribs);
1059  loadData(is, myPrimAttribs);
1060  loadData(is, myDetailAttribs);
1061  loadData(is, myDetailAttribsAsDetail);
1062  loadData(is, myScaleRadiiBy);
1063  loadData(is, myUseMaxRadius);
1064  loadData(is, myMaxRadius);
1065 
1066  return true;
1067  }
1068 
1069  const UT_StringHolder & getGroup() const { return myGroup; }
1070  void setGroup(const UT_StringHolder & val) { myGroup = val; }
1072  {
1073  SOP_Node *thissop = cookparms.getNode();
1074  if (!thissop) return getGroup();
1076  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
1077  return result;
1078  }
1079  GenerateBy getGenerateBy() const { return GenerateBy(myGenerateBy); }
1080  void setGenerateBy(GenerateBy val) { myGenerateBy = int64(val); }
1082  {
1083  SOP_Node *thissop = cookparms.getNode();
1084  if (!thissop) return getGenerateBy();
1085  int64 result;
1086  OP_Utils::evalOpParm(result, thissop, "generateby", cookparms.getCookTime(), 0);
1087  return GenerateBy(result);
1088  }
1089  bool getIndepVoxel() const { return myIndepVoxel; }
1090  void setIndepVoxel(bool val) { myIndepVoxel = val; }
1091  bool opIndepVoxel(const SOP_NodeVerb::CookParms &cookparms) const
1092  {
1093  SOP_Node *thissop = cookparms.getNode();
1094  if (!thissop) return getIndepVoxel();
1095  bool result;
1096  OP_Utils::evalOpParm(result, thissop, "indepvoxel", cookparms.getCookTime(), 0);
1097  return result;
1098  }
1099  bool getForceTotal() const { return myForceTotal; }
1100  void setForceTotal(bool val) { myForceTotal = val; }
1101  bool opForceTotal(const SOP_NodeVerb::CookParms &cookparms) const
1102  {
1103  SOP_Node *thissop = cookparms.getNode();
1104  if (!thissop) return getForceTotal();
1105  bool result;
1106  OP_Utils::evalOpParm(result, thissop, "forcetotal", cookparms.getCookTime(), 0);
1107  return result;
1108  }
1109  int64 getNpts() const { return myNpts; }
1110  void setNpts(int64 val) { myNpts = val; }
1111  int64 opNpts(const SOP_NodeVerb::CookParms &cookparms) const
1112  {
1113  SOP_Node *thissop = cookparms.getNode();
1114  if (!thissop) return getNpts();
1115  int64 result;
1116  OP_Utils::evalOpParm(result, thissop, "npts", cookparms.getCookTime(), 0);
1117  return result;
1118  }
1119  fpreal64 getDensityScale() const { return myDensityScale; }
1120  void setDensityScale(fpreal64 val) { myDensityScale = val; }
1122  {
1123  SOP_Node *thissop = cookparms.getNode();
1124  if (!thissop) return getDensityScale();
1125  fpreal64 result;
1126  OP_Utils::evalOpParm(result, thissop, "densityscale", cookparms.getCookTime(), 0);
1127  return result;
1128  }
1129  bool getUseDensityAttrib() const { return myUseDensityAttrib; }
1130  void setUseDensityAttrib(bool val) { myUseDensityAttrib = val; }
1131  bool opUseDensityAttrib(const SOP_NodeVerb::CookParms &cookparms) const
1132  {
1133  SOP_Node *thissop = cookparms.getNode();
1134  if (!thissop) return getUseDensityAttrib();
1135  bool result;
1136  OP_Utils::evalOpParm(result, thissop, "usedensityattrib", cookparms.getCookTime(), 0);
1137  return result;
1138  }
1139  const UT_StringHolder & getDensityAttrib() const { return myDensityAttrib; }
1140  void setDensityAttrib(const UT_StringHolder & val) { myDensityAttrib = val; }
1142  {
1143  SOP_Node *thissop = cookparms.getNode();
1144  if (!thissop) return getDensityAttrib();
1146  OP_Utils::evalOpParm(result, thissop, "densityattrib", cookparms.getCookTime(), 0);
1147  return result;
1148  }
1149  bool getUseAreaAttrib() const { return myUseAreaAttrib; }
1150  void setUseAreaAttrib(bool val) { myUseAreaAttrib = val; }
1151  bool opUseAreaAttrib(const SOP_NodeVerb::CookParms &cookparms) const
1152  {
1153  SOP_Node *thissop = cookparms.getNode();
1154  if (!thissop) return getUseAreaAttrib();
1155  bool result;
1156  OP_Utils::evalOpParm(result, thissop, "useareaattrib", cookparms.getCookTime(), 0);
1157  return result;
1158  }
1159  const UT_StringHolder & getAreaAttrib() const { return myAreaAttrib; }
1160  void setAreaAttrib(const UT_StringHolder & val) { myAreaAttrib = val; }
1162  {
1163  SOP_Node *thissop = cookparms.getNode();
1164  if (!thissop) return getAreaAttrib();
1166  OP_Utils::evalOpParm(result, thissop, "areaattrib", cookparms.getCookTime(), 0);
1167  return result;
1168  }
1169  bool getUseAreaForVolumes() const { return myUseAreaForVolumes; }
1170  void setUseAreaForVolumes(bool val) { myUseAreaForVolumes = val; }
1171  bool opUseAreaForVolumes(const SOP_NodeVerb::CookParms &cookparms) const
1172  {
1173  SOP_Node *thissop = cookparms.getNode();
1174  if (!thissop) return getUseAreaForVolumes();
1175  bool result;
1176  OP_Utils::evalOpParm(result, thissop, "useareaforvolumes", cookparms.getCookTime(), 0);
1177  return result;
1178  }
1179  bool getUseDensityTexture() const { return myUseDensityTexture; }
1180  void setUseDensityTexture(bool val) { myUseDensityTexture = val; }
1181  bool opUseDensityTexture(const SOP_NodeVerb::CookParms &cookparms) const
1182  {
1183  SOP_Node *thissop = cookparms.getNode();
1184  if (!thissop) return getUseDensityTexture();
1185  bool result;
1186  OP_Utils::evalOpParm(result, thissop, "usedensitytexture", cookparms.getCookTime(), 0);
1187  return result;
1188  }
1189  const UT_StringHolder & getDensityTexture() const { return myDensityTexture; }
1190  void setDensityTexture(const UT_StringHolder & val) { myDensityTexture = val; }
1192  {
1193  SOP_Node *thissop = cookparms.getNode();
1194  if (!thissop) return getDensityTexture();
1196  OP_Utils::evalOpParm(result, thissop, "densitytexture", cookparms.getCookTime(), 0);
1197  return result;
1198  }
1199  const UT_StringHolder & getUVAttrib() const { return myUVAttrib; }
1200  void setUVAttrib(const UT_StringHolder & val) { myUVAttrib = val; }
1202  {
1203  SOP_Node *thissop = cookparms.getNode();
1204  if (!thissop) return getUVAttrib();
1206  OP_Utils::evalOpParm(result, thissop, "uvattrib", cookparms.getCookTime(), 0);
1207  return result;
1208  }
1209  const UT_StringHolder & getCountPerPrimAttrib() const { return myCountPerPrimAttrib; }
1210  void setCountPerPrimAttrib(const UT_StringHolder & val) { myCountPerPrimAttrib = val; }
1212  {
1213  SOP_Node *thissop = cookparms.getNode();
1214  if (!thissop) return getCountPerPrimAttrib();
1216  OP_Utils::evalOpParm(result, thissop, "primcountattrib", cookparms.getCookTime(), 0);
1217  return result;
1218  }
1219  bool getUseEmergencyLimit() const { return myUseEmergencyLimit; }
1220  void setUseEmergencyLimit(bool val) { myUseEmergencyLimit = val; }
1221  bool opUseEmergencyLimit(const SOP_NodeVerb::CookParms &cookparms) const
1222  {
1223  SOP_Node *thissop = cookparms.getNode();
1224  if (!thissop) return getUseEmergencyLimit();
1225  bool result;
1226  OP_Utils::evalOpParm(result, thissop, "useemergencylimit", cookparms.getCookTime(), 0);
1227  return result;
1228  }
1229  int64 getEmergencyLimit() const { return myEmergencyLimit; }
1230  void setEmergencyLimit(int64 val) { myEmergencyLimit = val; }
1232  {
1233  SOP_Node *thissop = cookparms.getNode();
1234  if (!thissop) return getEmergencyLimit();
1235  int64 result;
1236  OP_Utils::evalOpParm(result, thissop, "emergencylimit", cookparms.getCookTime(), 0);
1237  return result;
1238  }
1239  fpreal64 getSeed() const { return mySeed; }
1240  void setSeed(fpreal64 val) { mySeed = val; }
1241  fpreal64 opSeed(const SOP_NodeVerb::CookParms &cookparms) const
1242  {
1243  SOP_Node *thissop = cookparms.getNode();
1244  if (!thissop) return getSeed();
1245  fpreal64 result;
1246  OP_Utils::evalOpParm(result, thissop, "seed", cookparms.getCookTime(), 0);
1247  return result;
1248  }
1249  bool getOverridePrimSeed() const { return myOverridePrimSeed; }
1250  void setOverridePrimSeed(bool val) { myOverridePrimSeed = val; }
1251  bool opOverridePrimSeed(const SOP_NodeVerb::CookParms &cookparms) const
1252  {
1253  SOP_Node *thissop = cookparms.getNode();
1254  if (!thissop) return getOverridePrimSeed();
1255  bool result;
1256  OP_Utils::evalOpParm(result, thissop, "overrideprimseed", cookparms.getCookTime(), 0);
1257  return result;
1258  }
1259  const UT_StringHolder & getPrimSeedAttrib() const { return myPrimSeedAttrib; }
1260  void setPrimSeedAttrib(const UT_StringHolder & val) { myPrimSeedAttrib = val; }
1262  {
1263  SOP_Node *thissop = cookparms.getNode();
1264  if (!thissop) return getPrimSeedAttrib();
1266  OP_Utils::evalOpParm(result, thissop, "primseedattrib", cookparms.getCookTime(), 0);
1267  return result;
1268  }
1269  bool getRandomizeOrder() const { return myRandomizeOrder; }
1270  void setRandomizeOrder(bool val) { myRandomizeOrder = val; }
1271  bool opRandomizeOrder(const SOP_NodeVerb::CookParms &cookparms) const
1272  {
1273  SOP_Node *thissop = cookparms.getNode();
1274  if (!thissop) return getRandomizeOrder();
1275  bool result;
1276  OP_Utils::evalOpParm(result, thissop, "randomizeorder", cookparms.getCookTime(), 0);
1277  return result;
1278  }
1279  bool getRelaxPoints() const { return myRelaxPoints; }
1280  void setRelaxPoints(bool val) { myRelaxPoints = val; }
1281  bool opRelaxPoints(const SOP_NodeVerb::CookParms &cookparms) const
1282  {
1283  SOP_Node *thissop = cookparms.getNode();
1284  if (!thissop) return getRelaxPoints();
1285  bool result;
1286  OP_Utils::evalOpParm(result, thissop, "relaxpoints", cookparms.getCookTime(), 0);
1287  return result;
1288  }
1289  int64 getRelaxIterations() const { return myRelaxIterations; }
1290  void setRelaxIterations(int64 val) { myRelaxIterations = val; }
1292  {
1293  SOP_Node *thissop = cookparms.getNode();
1294  if (!thissop) return getRelaxIterations();
1295  int64 result;
1296  OP_Utils::evalOpParm(result, thissop, "relaxiterations", cookparms.getCookTime(), 0);
1297  return result;
1298  }
1299  bool getUseGeometricNormals() const { return myUseGeometricNormals; }
1300  void setUseGeometricNormals(bool val) { myUseGeometricNormals = val; }
1301  bool opUseGeometricNormals(const SOP_NodeVerb::CookParms &cookparms) const
1302  {
1303  SOP_Node *thissop = cookparms.getNode();
1304  if (!thissop) return getUseGeometricNormals();
1305  bool result;
1306  OP_Utils::evalOpParm(result, thissop, "usegeometricnormals", cookparms.getCookTime(), 0);
1307  return result;
1308  }
1309  bool getUsePrimNumAttrib() const { return myUsePrimNumAttrib; }
1310  void setUsePrimNumAttrib(bool val) { myUsePrimNumAttrib = val; }
1311  bool opUsePrimNumAttrib(const SOP_NodeVerb::CookParms &cookparms) const
1312  {
1313  SOP_Node *thissop = cookparms.getNode();
1314  if (!thissop) return getUsePrimNumAttrib();
1315  bool result;
1316  OP_Utils::evalOpParm(result, thissop, "useprimnumattrib", cookparms.getCookTime(), 0);
1317  return result;
1318  }
1319  const UT_StringHolder & getPrimNumAttrib() const { return myPrimNumAttrib; }
1320  void setPrimNumAttrib(const UT_StringHolder & val) { myPrimNumAttrib = val; }
1322  {
1323  SOP_Node *thissop = cookparms.getNode();
1324  if (!thissop) return getPrimNumAttrib();
1326  OP_Utils::evalOpParm(result, thissop, "primnumattrib", cookparms.getCookTime(), 0);
1327  return result;
1328  }
1329  bool getUsePrimUVWAttrib() const { return myUsePrimUVWAttrib; }
1330  void setUsePrimUVWAttrib(bool val) { myUsePrimUVWAttrib = val; }
1331  bool opUsePrimUVWAttrib(const SOP_NodeVerb::CookParms &cookparms) const
1332  {
1333  SOP_Node *thissop = cookparms.getNode();
1334  if (!thissop) return getUsePrimUVWAttrib();
1335  bool result;
1336  OP_Utils::evalOpParm(result, thissop, "useprimuvwattrib", cookparms.getCookTime(), 0);
1337  return result;
1338  }
1339  const UT_StringHolder & getPrimUVWAttrib() const { return myPrimUVWAttrib; }
1340  void setPrimUVWAttrib(const UT_StringHolder & val) { myPrimUVWAttrib = val; }
1342  {
1343  SOP_Node *thissop = cookparms.getNode();
1344  if (!thissop) return getPrimUVWAttrib();
1346  OP_Utils::evalOpParm(result, thissop, "primuvwattrib", cookparms.getCookTime(), 0);
1347  return result;
1348  }
1349  bool getUseOutputDensityAttrib() const { return myUseOutputDensityAttrib; }
1350  void setUseOutputDensityAttrib(bool val) { myUseOutputDensityAttrib = val; }
1352  {
1353  SOP_Node *thissop = cookparms.getNode();
1354  if (!thissop) return getUseOutputDensityAttrib();
1355  bool result;
1356  OP_Utils::evalOpParm(result, thissop, "useoutputdensityattrib", cookparms.getCookTime(), 0);
1357  return result;
1358  }
1359  const UT_StringHolder & getOutputDensityAttrib() const { return myOutputDensityAttrib; }
1360  void setOutputDensityAttrib(const UT_StringHolder & val) { myOutputDensityAttrib = val; }
1362  {
1363  SOP_Node *thissop = cookparms.getNode();
1364  if (!thissop) return getOutputDensityAttrib();
1366  OP_Utils::evalOpParm(result, thissop, "outputdensityattrib", cookparms.getCookTime(), 0);
1367  return result;
1368  }
1369  bool getUseOutputRadiusAttrib() const { return myUseOutputRadiusAttrib; }
1370  void setUseOutputRadiusAttrib(bool val) { myUseOutputRadiusAttrib = val; }
1372  {
1373  SOP_Node *thissop = cookparms.getNode();
1374  if (!thissop) return getUseOutputRadiusAttrib();
1375  bool result;
1376  OP_Utils::evalOpParm(result, thissop, "useoutputradiusattrib", cookparms.getCookTime(), 0);
1377  return result;
1378  }
1379  const UT_StringHolder & getOutputRadiusAttrib() const { return myOutputRadiusAttrib; }
1380  void setOutputRadiusAttrib(const UT_StringHolder & val) { myOutputRadiusAttrib = val; }
1382  {
1383  SOP_Node *thissop = cookparms.getNode();
1384  if (!thissop) return getOutputRadiusAttrib();
1386  OP_Utils::evalOpParm(result, thissop, "outputradiusattrib", cookparms.getCookTime(), 0);
1387  return result;
1388  }
1389  bool getUseOutputIdAttrib() const { return myUseOutputIdAttrib; }
1390  void setUseOutputIdAttrib(bool val) { myUseOutputIdAttrib = val; }
1391  bool opUseOutputIdAttrib(const SOP_NodeVerb::CookParms &cookparms) const
1392  {
1393  SOP_Node *thissop = cookparms.getNode();
1394  if (!thissop) return getUseOutputIdAttrib();
1395  bool result;
1396  OP_Utils::evalOpParm(result, thissop, "useoutputidattrib", cookparms.getCookTime(), 0);
1397  return result;
1398  }
1399  const UT_StringHolder & getOutputIdAttrib() const { return myOutputIdAttrib; }
1400  void setOutputIdAttrib(const UT_StringHolder & val) { myOutputIdAttrib = val; }
1402  {
1403  SOP_Node *thissop = cookparms.getNode();
1404  if (!thissop) return getOutputIdAttrib();
1406  OP_Utils::evalOpParm(result, thissop, "outputidattrib", cookparms.getCookTime(), 0);
1407  return result;
1408  }
1409  bool getRadiusInTextureSpace() const { return myRadiusInTextureSpace; }
1410  void setRadiusInTextureSpace(bool val) { myRadiusInTextureSpace = val; }
1412  {
1413  SOP_Node *thissop = cookparms.getNode();
1414  if (!thissop) return getRadiusInTextureSpace();
1415  bool result;
1416  OP_Utils::evalOpParm(result, thissop, "radiusintexturespace", cookparms.getCookTime(), 0);
1417  return result;
1418  }
1419  const UT_StringHolder & getPointAttribs() const { return myPointAttribs; }
1420  void setPointAttribs(const UT_StringHolder & val) { myPointAttribs = val; }
1422  {
1423  SOP_Node *thissop = cookparms.getNode();
1424  if (!thissop) return getPointAttribs();
1426  OP_Utils::evalOpParm(result, thissop, "pointattribs", cookparms.getCookTime(), 0);
1427  return result;
1428  }
1429  const UT_StringHolder & getVertAttribs() const { return myVertAttribs; }
1430  void setVertAttribs(const UT_StringHolder & val) { myVertAttribs = val; }
1432  {
1433  SOP_Node *thissop = cookparms.getNode();
1434  if (!thissop) return getVertAttribs();
1436  OP_Utils::evalOpParm(result, thissop, "vertattribs", cookparms.getCookTime(), 0);
1437  return result;
1438  }
1439  const UT_StringHolder & getPrimAttribs() const { return myPrimAttribs; }
1440  void setPrimAttribs(const UT_StringHolder & val) { myPrimAttribs = val; }
1442  {
1443  SOP_Node *thissop = cookparms.getNode();
1444  if (!thissop) return getPrimAttribs();
1446  OP_Utils::evalOpParm(result, thissop, "primattribs", cookparms.getCookTime(), 0);
1447  return result;
1448  }
1449  const UT_StringHolder & getDetailAttribs() const { return myDetailAttribs; }
1450  void setDetailAttribs(const UT_StringHolder & val) { myDetailAttribs = val; }
1452  {
1453  SOP_Node *thissop = cookparms.getNode();
1454  if (!thissop) return getDetailAttribs();
1456  OP_Utils::evalOpParm(result, thissop, "detailattribs", cookparms.getCookTime(), 0);
1457  return result;
1458  }
1459  const UT_StringHolder & getDetailAttribsAsDetail() const { return myDetailAttribsAsDetail; }
1460  void setDetailAttribsAsDetail(const UT_StringHolder & val) { myDetailAttribsAsDetail = val; }
1462  {
1463  SOP_Node *thissop = cookparms.getNode();
1464  if (!thissop) return getDetailAttribsAsDetail();
1466  OP_Utils::evalOpParm(result, thissop, "detailattribsasdetail", cookparms.getCookTime(), 0);
1467  return result;
1468  }
1469  fpreal64 getScaleRadiiBy() const { return myScaleRadiiBy; }
1470  void setScaleRadiiBy(fpreal64 val) { myScaleRadiiBy = val; }
1472  {
1473  SOP_Node *thissop = cookparms.getNode();
1474  if (!thissop) return getScaleRadiiBy();
1475  fpreal64 result;
1476  OP_Utils::evalOpParm(result, thissop, "scaleradiiby", cookparms.getCookTime(), 0);
1477  return result;
1478  }
1479  bool getUseMaxRadius() const { return myUseMaxRadius; }
1480  void setUseMaxRadius(bool val) { myUseMaxRadius = val; }
1481  bool opUseMaxRadius(const SOP_NodeVerb::CookParms &cookparms) const
1482  {
1483  SOP_Node *thissop = cookparms.getNode();
1484  if (!thissop) return getUseMaxRadius();
1485  bool result;
1486  OP_Utils::evalOpParm(result, thissop, "usemaxradius", cookparms.getCookTime(), 0);
1487  return result;
1488  }
1489  fpreal64 getMaxRadius() const { return myMaxRadius; }
1490  void setMaxRadius(fpreal64 val) { myMaxRadius = val; }
1492  {
1493  SOP_Node *thissop = cookparms.getNode();
1494  if (!thissop) return getMaxRadius();
1495  fpreal64 result;
1496  OP_Utils::evalOpParm(result, thissop, "maxradius", cookparms.getCookTime(), 0);
1497  return result;
1498  }
1499 
1500 private:
1501  UT_StringHolder myGroup;
1502  int64 myGenerateBy;
1503  bool myIndepVoxel;
1504  bool myForceTotal;
1505  int64 myNpts;
1506  fpreal64 myDensityScale;
1507  bool myUseDensityAttrib;
1508  UT_StringHolder myDensityAttrib;
1509  bool myUseAreaAttrib;
1510  UT_StringHolder myAreaAttrib;
1511  bool myUseAreaForVolumes;
1512  bool myUseDensityTexture;
1513  UT_StringHolder myDensityTexture;
1514  UT_StringHolder myUVAttrib;
1515  UT_StringHolder myCountPerPrimAttrib;
1516  bool myUseEmergencyLimit;
1517  int64 myEmergencyLimit;
1518  fpreal64 mySeed;
1519  bool myOverridePrimSeed;
1520  UT_StringHolder myPrimSeedAttrib;
1521  bool myRandomizeOrder;
1522  bool myRelaxPoints;
1523  int64 myRelaxIterations;
1524  bool myUseGeometricNormals;
1525  bool myUsePrimNumAttrib;
1526  UT_StringHolder myPrimNumAttrib;
1527  bool myUsePrimUVWAttrib;
1528  UT_StringHolder myPrimUVWAttrib;
1529  bool myUseOutputDensityAttrib;
1530  UT_StringHolder myOutputDensityAttrib;
1531  bool myUseOutputRadiusAttrib;
1532  UT_StringHolder myOutputRadiusAttrib;
1533  bool myUseOutputIdAttrib;
1534  UT_StringHolder myOutputIdAttrib;
1535  bool myRadiusInTextureSpace;
1536  UT_StringHolder myPointAttribs;
1537  UT_StringHolder myVertAttribs;
1538  UT_StringHolder myPrimAttribs;
1539  UT_StringHolder myDetailAttribs;
1540  UT_StringHolder myDetailAttribsAsDetail;
1541  fpreal64 myScaleRadiiBy;
1542  bool myUseMaxRadius;
1543  fpreal64 myMaxRadius;
1544 
1545 };
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
UT_StringHolder opVertAttribs(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getScaleRadiiBy() const
static void saveData(std::ostream &os, UT_Vector4D v)
const UT_StringHolder & getPrimNumAttrib() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
static void loadData(UT_IStream &is, UT_Matrix4D &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
void setGroup(const UT_StringHolder &val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
void setSeed(fpreal64 val)
void setScaleRadiiBy(fpreal64 val)
static void loadData(UT_IStream &is, UT_Vector2D &v)
static void saveData(std::ostream &os, UT_StringHolder s)
void setDetailAttribsAsDetail(const UT_StringHolder &val)
UT_StringHolder opPrimAttribs(const SOP_NodeVerb::CookParms &cookparms) const
void setUseDensityTexture(bool val)
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
void setVertAttribs(const UT_StringHolder &val)
void setGenerateBy(GenerateBy val)
void setOutputIdAttrib(const UT_StringHolder &val)
exint bread(int32 *buffer, exint asize=1)
GLboolean * data
Definition: glcorearb.h:131
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
GT_API const UT_StringHolder time
void loadFromOpSubclass(const LoadParms &loadparms) override
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:493
const GLdouble * v
Definition: glcorearb.h:837
fpreal getTime() const
Definition: OP_Context.h:62
bool opUseDensityAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
UT_StringHolder opPrimSeedAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setDensityScale(fpreal64 val)
static void saveData(std::ostream &os, UT_Matrix3D v)
const UT_StringHolder & getOutputIdAttrib() const
bool opUseOutputRadiusAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setUseOutputRadiusAttrib(bool val)
const OP_Context & context() const
Definition: OP_NodeParms.h:97
void setUseOutputDensityAttrib(bool val)
UT_StringHolder opOutputDensityAttrib(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 getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
SYS_FORCE_INLINE const char * buffer() const
void setPrimUVWAttrib(const UT_StringHolder &val)
GLdouble s
Definition: glad.h:3009
static void loadData(UT_IStream &is, UT_Vector3I &v)
An output stream object that owns its own string buffer storage.
static void loadData(UT_IStream &is, bool &v)
UT_StringHolder opDetailAttribs(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opDensityTexture(const SOP_NodeVerb::CookParms &cookparms) const
void setPrimAttribs(const UT_StringHolder &val)
static void saveData(std::ostream &os, UT_Vector3D v)
const UT_StringHolder & getPrimSeedAttrib() const
**But if you need a result
Definition: thread.h:613
static void saveData(std::ostream &os, UT_Vector2D v)
bool opRandomizeOrder(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opOutputRadiusAttrib(const SOP_NodeVerb::CookParms &cookparms) const
exint nodeIdx() const
Definition: OP_NodeParms.h:95
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
UT_StringHolder opUVAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setPointAttribs(const UT_StringHolder &val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
const char * getNestParmName(TempIndex fieldnum) const override
const UT_StringHolder & getVertAttribs() const
void setDensityAttrib(const UT_StringHolder &val)
const UT_StringHolder & getOutputDensityAttrib() const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
bool opUseMaxRadius(const SOP_NodeVerb::CookParms &cookparms) const
bool opOverridePrimSeed(const SOP_NodeVerb::CookParms &cookparms) const
void setMaxRadius(fpreal64 val)
void setUseAreaForVolumes(bool val)
UT_StringHolder opAreaAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
void setDensityTexture(const UT_StringHolder &val)
double fpreal64
Definition: SYS_Types.h:201
void setOutputDensityAttrib(const UT_StringHolder &val)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
void setUseOutputIdAttrib(bool val)
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
ParmType getNestParmType(TempIndex fieldnum) const override
UT_StringHolder opDensityAttrib(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getDetailAttribsAsDetail() const
const UT_StringHolder & getAreaAttrib() const
SYS_FORCE_INLINE UT_StringHolder getToken(GenerateBy enum_value)
bool opUsePrimNumAttrib(const SOP_NodeVerb::CookParms &cookparms) const
bool opRadiusInTextureSpace(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opSeed(const SOP_NodeVerb::CookParms &cookparms) const
GenerateBy opGenerateBy(const SOP_NodeVerb::CookParms &cookparms) const
exint length() const
const UT_StringHolder & getCountPerPrimAttrib() const
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
SYS_FORCE_INLINE const char * buffer() const
const UT_StringHolder & getDensityTexture() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
void copyFrom(const OP_NodeParms *src) override
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
bool opIndepVoxel(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getDetailAttribs() const
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
const UT_StringHolder & getPrimAttribs() const
const UT_StringHolder & getGroup() const
void setAreaAttrib(const UT_StringHolder &val)
const UT_StringHolder & getOutputRadiusAttrib() const
int64 opNpts(const SOP_NodeVerb::CookParms &cookparms) const
bool opUseAreaForVolumes(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
bool operator==(const SOP_Scatter_2_0Parms &src) const
exint getNestNumParms(TempIndex idx) const override
void setUseGeometricNormals(bool val)
static void saveData(std::ostream &os, int64 v)
long long int64
Definition: SYS_Types.h:116
bool opUseAreaAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setCountPerPrimAttrib(const UT_StringHolder &val)
bool getUseOutputRadiusAttrib() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
static void loadData(UT_IStream &is, UT_Matrix3D &v)
void save(std::ostream &os) const
bool isParmColorRamp(exint idx) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
const UT_StringHolder & getPointAttribs() const
UT_StringHolder opPrimUVWAttrib(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opMaxRadius(const SOP_NodeVerb::CookParms &cookparms) const
GenerateBy getGenerateBy() const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
const UT_StringHolder & getDensityAttrib() const
bool opForceTotal(const SOP_NodeVerb::CookParms &cookparms) const
bool opUsePrimUVWAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector2I &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
UT_StringHolder opPrimNumAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
GT_API const UT_StringHolder version
UT_StringHolder opOutputIdAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, int64 &v)
bool opUseDensityTexture(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, PRM_DataItemHandle s)
bool getUseGeometricNormals() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
void setUsePrimUVWAttrib(bool val)
bool opRelaxPoints(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Matrix4D v)
static void saveData(std::ostream &os, fpreal64 v)
void setUVAttrib(const UT_StringHolder &val)
bool operator!=(const SOP_Scatter_2_0Parms &src) const
static void loadData(UT_IStream &is, UT_StringHolder &v)
const UT_StringHolder & getPrimUVWAttrib() const
bool opUseOutputDensityAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
fpreal64 opScaleRadiiBy(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 fpreal
Definition: SYS_Types.h:277
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
UT_StringHolder opDetailAttribsAsDetail(const SOP_NodeVerb::CookParms &cookparms) const
LeafData & operator=(const LeafData &)=delete
static void loadData(UT_IStream &is, fpreal64 &v)
Utility class for containing a color ramp.
Definition: UT_Ramp.h:92
UT_StringHolder opPointAttribs(const SOP_NodeVerb::CookParms &cookparms) const
void setDetailAttribs(const UT_StringHolder &val)
fpreal64 getDensityScale() const
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
void setUseDensityAttrib(bool val)
GLuint GLfloat * val
Definition: glcorearb.h:1608
bool getRadiusInTextureSpace() const
fpreal64 getMaxRadius() const
#define SOP_API
Definition: SOP_API.h:10
bool opUseEmergencyLimit(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opCountPerPrimAttrib(const SOP_NodeVerb::CookParms &cookparms) const
bool opUseGeometricNormals(const SOP_NodeVerb::CookParms &cookparms) const
void setRadiusInTextureSpace(bool val)
int64 opEmergencyLimit(const SOP_NodeVerb::CookParms &cookparms) const
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
bool load(UT_IStream &is)
void setEmergencyLimit(int64 val)
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
const char * findChar(int c) const
Definition: UT_String.h:1395
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
Definition: core.h:1131
void setOutputRadiusAttrib(const UT_StringHolder &val)
void setPrimNumAttrib(const UT_StringHolder &val)
const UT_StringHolder & getUVAttrib() const
GLboolean r
Definition: glcorearb.h:1222
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
static void saveData(std::ostream &os, UT_Matrix2D v)
void setRelaxIterations(int64 val)
static void saveData(std::ostream &os, bool v)
void setPrimSeedAttrib(const UT_StringHolder &val)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
int64 opRelaxIterations(const SOP_NodeVerb::CookParms &cookparms) const
bool getUseOutputDensityAttrib() const
static void loadData(UT_IStream &is, UT_Vector4D &v)
type
Definition: core.h:1059
void setUsePrimNumAttrib(bool val)
void setOverridePrimSeed(bool val)
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:97
void setUseEmergencyLimit(bool val)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
SYS_FORCE_INLINE bool isstring() const
static void loadData(UT_IStream &is, UT_Matrix2D &v)
static void loadData(UT_IStream &is, UT_Vector3D &v)
bool opUseOutputIdAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4I &v)
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
fpreal64 opDensityScale(const SOP_NodeVerb::CookParms &cookparms) const