20 using namespace UT::Literal;
23 namespace SOP_Scatter_2_0Enums
43 myUseDensityAttrib =
false;
44 myDensityAttrib =
"density"_sh;
45 myUseAreaAttrib =
false;
46 myAreaAttrib =
"area"_sh;
50 myUseDensityTexture =
false;
51 myDensityTexture =
"default.pic"_sh;
52 myCountPerPrimAttrib =
"count"_sh;
53 myUseEmergencyLimit =
true;
54 myEmergencyLimit = 1e+06;
56 myOverridePrimSeed =
false;
57 myPrimSeedAttrib =
"primid"_sh;
58 myRandomizeOrder =
true;
60 myRelaxIterations = 10;
61 myUsePrimNumAttrib =
false;
62 myPrimNumAttrib =
"sourceprim"_sh;
63 myUsePrimUVWAttrib =
false;
64 myPrimUVWAttrib =
"sourceprimuv"_sh;
65 myUseOutputDensityAttrib =
false;
66 myOutputDensityAttrib =
"density"_sh;
67 myUseOutputRadiusAttrib =
false;
68 myOutputRadiusAttrib =
"pscale"_sh;
69 myRadiusInTextureSpace =
false;
70 myPointAttribs =
"*"_sh;
71 myVertAttribs =
"N uv*"_sh;
72 myPrimAttribs =
""_sh;
73 myDetailAttribs =
""_sh;
75 myUseAreaForVolumes =
false;
77 myUseMaxRadius =
true;
88 if (myGroup != src.myGroup)
return false;
89 if (myGenerateBy != src.myGenerateBy)
return false;
90 if (myUseDensityAttrib != src.myUseDensityAttrib)
return false;
91 if (myDensityAttrib != src.myDensityAttrib)
return false;
92 if (myUseAreaAttrib != src.myUseAreaAttrib)
return false;
93 if (myAreaAttrib != src.myAreaAttrib)
return false;
94 if (myIndepVoxel != src.myIndepVoxel)
return false;
95 if (myForceTotal != src.myForceTotal)
return false;
96 if (myNpts != src.myNpts)
return false;
97 if (myUseDensityTexture != src.myUseDensityTexture)
return false;
98 if (myDensityTexture != src.myDensityTexture)
return false;
99 if (myCountPerPrimAttrib != src.myCountPerPrimAttrib)
return false;
100 if (myUseEmergencyLimit != src.myUseEmergencyLimit)
return false;
101 if (myEmergencyLimit != src.myEmergencyLimit)
return false;
102 if (mySeed != src.mySeed)
return false;
103 if (myOverridePrimSeed != src.myOverridePrimSeed)
return false;
104 if (myPrimSeedAttrib != src.myPrimSeedAttrib)
return false;
105 if (myRandomizeOrder != src.myRandomizeOrder)
return false;
106 if (myRelaxPoints != src.myRelaxPoints)
return false;
107 if (myRelaxIterations != src.myRelaxIterations)
return false;
108 if (myUsePrimNumAttrib != src.myUsePrimNumAttrib)
return false;
109 if (myPrimNumAttrib != src.myPrimNumAttrib)
return false;
110 if (myUsePrimUVWAttrib != src.myUsePrimUVWAttrib)
return false;
111 if (myPrimUVWAttrib != src.myPrimUVWAttrib)
return false;
112 if (myUseOutputDensityAttrib != src.myUseOutputDensityAttrib)
return false;
113 if (myOutputDensityAttrib != src.myOutputDensityAttrib)
return false;
114 if (myUseOutputRadiusAttrib != src.myUseOutputRadiusAttrib)
return false;
115 if (myOutputRadiusAttrib != src.myOutputRadiusAttrib)
return false;
116 if (myRadiusInTextureSpace != src.myRadiusInTextureSpace)
return false;
117 if (myPointAttribs != src.myPointAttribs)
return false;
118 if (myVertAttribs != src.myVertAttribs)
return false;
119 if (myPrimAttribs != src.myPrimAttribs)
return false;
120 if (myDetailAttribs != src.myDetailAttribs)
return false;
121 if (myDensityScale != src.myDensityScale)
return false;
122 if (myUseAreaForVolumes != src.myUseAreaForVolumes)
return false;
123 if (myScaleRadiiBy != src.myScaleRadiiBy)
return false;
124 if (myUseMaxRadius != src.myUseMaxRadius)
return false;
125 if (myMaxRadius != src.myMaxRadius)
return false;
141 graph->
evalOpParm(myGroup, nodeidx,
"group", time, 0);
144 graph->
evalOpParm(myGenerateBy, nodeidx,
"generateby", time, 0);
145 myUseDensityAttrib =
false;
146 if (
true && ( (!(((
int64(getGenerateBy())!=0)))) ) )
147 graph->
evalOpParm(myUseDensityAttrib, nodeidx,
"usedensityattrib", time, 0);
148 myDensityAttrib =
"density"_sh;
149 if (
true && ( (!(((
int64(getGenerateBy())!=0))||((getUseDensityAttrib()==0)))) ) )
150 graph->
evalOpParm(myDensityAttrib, nodeidx,
"densityattrib", time, 0);
151 myUseAreaAttrib =
false;
152 if (
true && ( (!(((
int64(getGenerateBy())!=0)))) ) )
153 graph->
evalOpParm(myUseAreaAttrib, nodeidx,
"useareaattrib", time, 0);
154 myAreaAttrib =
"area"_sh;
155 if (
true && ( (!(((
int64(getGenerateBy())!=0))||((getUseAreaAttrib()==0)))) ) )
156 graph->
evalOpParm(myAreaAttrib, nodeidx,
"areaattrib", time, 0);
157 myIndepVoxel =
false;
158 if (
true && ( (!(((
int64(getGenerateBy())!=0)))) ) )
159 graph->
evalOpParm(myIndepVoxel, nodeidx,
"indepvoxel", time, 0);
161 if (
true && ( (!(((
int64(getGenerateBy())!=0))||((getIndepVoxel()==1)))) ) )
162 graph->
evalOpParm(myForceTotal, nodeidx,
"forcetotal", time, 0);
164 if (
true && ( (!(((
int64(getGenerateBy())!=0))||((getForceTotal()==0))||((getIndepVoxel()==1)))) ) )
165 graph->
evalOpParm(myNpts, nodeidx,
"npts", time, 0);
166 myUseDensityTexture =
false;
167 if (
true && ( (!(((
int64(getGenerateBy())!=2)))) ) )
168 graph->
evalOpParm(myUseDensityTexture, nodeidx,
"usedensitytexture", time, 0);
169 myDensityTexture =
"default.pic"_sh;
170 if (
true && ( (!(((
int64(getGenerateBy())!=2))||((getUseDensityTexture()==0)))) ) )
171 graph->
evalOpParm(myDensityTexture, nodeidx,
"densitytexture", time, 0);
172 myCountPerPrimAttrib =
"count"_sh;
173 if (
true && ( (!(((
int64(getGenerateBy())!=1)))) ) )
174 graph->
evalOpParm(myCountPerPrimAttrib, nodeidx,
"primcountattrib", time, 0);
175 myUseEmergencyLimit =
true;
177 graph->
evalOpParm(myUseEmergencyLimit, nodeidx,
"useemergencylimit", time, 0);
178 myEmergencyLimit = 1e+06;
179 if (
true && ( (!(((getUseEmergencyLimit()==0)))) ) )
180 graph->
evalOpParm(myEmergencyLimit, nodeidx,
"emergencylimit", time, 0);
183 graph->
evalOpParm(mySeed, nodeidx,
"seed", time, 0);
184 myOverridePrimSeed =
false;
185 if (
true && ( (!(((
int64(getGenerateBy())==2)))) ) )
186 graph->
evalOpParm(myOverridePrimSeed, nodeidx,
"overrideprimseed", time, 0);
187 myPrimSeedAttrib =
"primid"_sh;
188 if (
true && ( (!(((
int64(getGenerateBy())==2))||((getOverridePrimSeed()==0)))) ) )
189 graph->
evalOpParm(myPrimSeedAttrib, nodeidx,
"primseedattrib", time, 0);
190 myRandomizeOrder =
true;
192 graph->
evalOpParm(myRandomizeOrder, nodeidx,
"randomizeorder", time, 0);
193 myRelaxPoints =
true;
195 graph->
evalOpParm(myRelaxPoints, nodeidx,
"relaxpoints", time, 0);
196 myRelaxIterations = 10;
197 if (
true && ( (!(((getRelaxPoints()==0)))) ) )
198 graph->
evalOpParm(myRelaxIterations, nodeidx,
"relaxiterations", time, 0);
199 myUsePrimNumAttrib =
false;
201 graph->
evalOpParm(myUsePrimNumAttrib, nodeidx,
"useprimnumattrib", time, 0);
202 myPrimNumAttrib =
"sourceprim"_sh;
203 if (
true && ( (!(((getUsePrimNumAttrib()==0)))) ) )
204 graph->
evalOpParm(myPrimNumAttrib, nodeidx,
"primnumattrib", time, 0);
205 myUsePrimUVWAttrib =
false;
207 graph->
evalOpParm(myUsePrimUVWAttrib, nodeidx,
"useprimuvwattrib", time, 0);
208 myPrimUVWAttrib =
"sourceprimuv"_sh;
209 if (
true && ( (!(((getUsePrimUVWAttrib()==0)))) ) )
210 graph->
evalOpParm(myPrimUVWAttrib, nodeidx,
"primuvwattrib", time, 0);
211 myUseOutputDensityAttrib =
false;
213 graph->
evalOpParm(myUseOutputDensityAttrib, nodeidx,
"useoutputdensityattrib", time, 0);
214 myOutputDensityAttrib =
"density"_sh;
215 if (
true && ( (!(((getUseOutputDensityAttrib()==0)))) ) )
216 graph->
evalOpParm(myOutputDensityAttrib, nodeidx,
"outputdensityattrib", time, 0);
217 myUseOutputRadiusAttrib =
false;
219 graph->
evalOpParm(myUseOutputRadiusAttrib, nodeidx,
"useoutputradiusattrib", time, 0);
220 myOutputRadiusAttrib =
"pscale"_sh;
221 if (
true && ( (!(((getUseOutputRadiusAttrib()==0)))) ) )
222 graph->
evalOpParm(myOutputRadiusAttrib, nodeidx,
"outputradiusattrib", time, 0);
223 myRadiusInTextureSpace =
false;
224 if (
true && ( (!(((
int64(getGenerateBy())!=2))||((getUseOutputRadiusAttrib()==0)&&(getUseOutputDensityAttrib()==0)))) ) )
225 graph->
evalOpParm(myRadiusInTextureSpace, nodeidx,
"radiusintexturespace", time, 0);
226 myPointAttribs =
"*"_sh;
228 graph->
evalOpParm(myPointAttribs, nodeidx,
"pointattribs", time, 0);
229 myVertAttribs =
"N uv*"_sh;
231 graph->
evalOpParm(myVertAttribs, nodeidx,
"vertattribs", time, 0);
232 myPrimAttribs =
""_sh;
234 graph->
evalOpParm(myPrimAttribs, nodeidx,
"primattribs", time, 0);
235 myDetailAttribs =
""_sh;
237 graph->
evalOpParm(myDetailAttribs, nodeidx,
"detailattribs", time, 0);
239 if (
true && ( (!(((
int64(getGenerateBy())==1))||((
int64(getGenerateBy())==0)&&(getForceTotal()==1)&&(getIndepVoxel()==0)))) ) )
240 graph->
evalOpParm(myDensityScale, nodeidx,
"densityscale", time, 0);
241 myUseAreaForVolumes =
false;
242 if (
true && ( (!(((
int64(getGenerateBy())!=0))||((getForceTotal()==1)&&(getIndepVoxel()==0)))) ) )
243 graph->
evalOpParm(myUseAreaForVolumes, nodeidx,
"useareaforvolumes", time, 0);
245 if (
true && ( (!(((getRelaxPoints()==0)&&(getUseOutputRadiusAttrib()==0)))) ) )
246 graph->
evalOpParm(myScaleRadiiBy, nodeidx,
"scaleradiiby", time, 0);
247 myUseMaxRadius =
true;
248 if (
true && ( (!(((getRelaxPoints()==0)&&(getUseOutputRadiusAttrib()==0)))) ) )
249 graph->
evalOpParm(myUseMaxRadius, nodeidx,
"usemaxradius", time, 0);
251 if (
true && ( (!(((getRelaxPoints()==0)&&(getUseOutputRadiusAttrib()==0))||((getUseMaxRadius()==0)))) ) )
252 graph->
evalOpParm(myMaxRadius, nodeidx,
"maxradius", time, 0);
268 template <
typename T>
275 if (idx.
size() != instance.
size()+1)
280 coerceValue(value, myGroup);
283 coerceValue(value, myGenerateBy);
286 coerceValue(value, myUseDensityAttrib);
289 coerceValue(value, myDensityAttrib);
292 coerceValue(value, myUseAreaAttrib);
295 coerceValue(value, myAreaAttrib);
298 coerceValue(value, myIndepVoxel);
301 coerceValue(value, myForceTotal);
304 coerceValue(value, myNpts);
307 coerceValue(value, myUseDensityTexture);
310 coerceValue(value, myDensityTexture);
313 coerceValue(value, myCountPerPrimAttrib);
316 coerceValue(value, myUseEmergencyLimit);
319 coerceValue(value, myEmergencyLimit);
322 coerceValue(value, mySeed);
325 coerceValue(value, myOverridePrimSeed);
328 coerceValue(value, myPrimSeedAttrib);
331 coerceValue(value, myRandomizeOrder);
334 coerceValue(value, myRelaxPoints);
337 coerceValue(value, myRelaxIterations);
340 coerceValue(value, myUsePrimNumAttrib);
343 coerceValue(value, myPrimNumAttrib);
346 coerceValue(value, myUsePrimUVWAttrib);
349 coerceValue(value, myPrimUVWAttrib);
352 coerceValue(value, myUseOutputDensityAttrib);
355 coerceValue(value, myOutputDensityAttrib);
358 coerceValue(value, myUseOutputRadiusAttrib);
361 coerceValue(value, myOutputRadiusAttrib);
364 coerceValue(value, myRadiusInTextureSpace);
367 coerceValue(value, myPointAttribs);
370 coerceValue(value, myVertAttribs);
373 coerceValue(value, myPrimAttribs);
376 coerceValue(value, myDetailAttribs);
379 coerceValue(value, myDensityScale);
382 coerceValue(value, myUseAreaForVolumes);
385 coerceValue(value, myScaleRadiiBy);
388 coerceValue(value, myUseMaxRadius);
391 coerceValue(value, myMaxRadius);
398 { doGetParmValue(idx, instance, value); }
400 { doGetParmValue(idx, instance, value); }
402 { doGetParmValue(idx, instance, value); }
404 { doGetParmValue(idx, instance, value); }
406 { doGetParmValue(idx, instance, value); }
408 { doGetParmValue(idx, instance, value); }
410 { doGetParmValue(idx, instance, value); }
412 { doGetParmValue(idx, instance, value); }
414 { doGetParmValue(idx, instance, value); }
416 { doGetParmValue(idx, instance, value); }
418 { doGetParmValue(idx, instance, value); }
420 template <
typename T>
427 if (idx.
size() != instance.
size()+1)
432 coerceValue(myGroup, value);
435 coerceValue(myGenerateBy, value);
438 coerceValue(myUseDensityAttrib, value);
441 coerceValue(myDensityAttrib, value);
444 coerceValue(myUseAreaAttrib, value);
447 coerceValue(myAreaAttrib, value);
450 coerceValue(myIndepVoxel, value);
453 coerceValue(myForceTotal, value);
456 coerceValue(myNpts, value);
459 coerceValue(myUseDensityTexture, value);
462 coerceValue(myDensityTexture, value);
465 coerceValue(myCountPerPrimAttrib, value);
468 coerceValue(myUseEmergencyLimit, value);
471 coerceValue(myEmergencyLimit, value);
474 coerceValue(mySeed, value);
477 coerceValue(myOverridePrimSeed, value);
480 coerceValue(myPrimSeedAttrib, value);
483 coerceValue(myRandomizeOrder, value);
486 coerceValue(myRelaxPoints, value);
489 coerceValue(myRelaxIterations, value);
492 coerceValue(myUsePrimNumAttrib, value);
495 coerceValue(myPrimNumAttrib, value);
498 coerceValue(myUsePrimUVWAttrib, value);
501 coerceValue(myPrimUVWAttrib, value);
504 coerceValue(myUseOutputDensityAttrib, value);
507 coerceValue(myOutputDensityAttrib, value);
510 coerceValue(myUseOutputRadiusAttrib, value);
513 coerceValue(myOutputRadiusAttrib, value);
516 coerceValue(myRadiusInTextureSpace, value);
519 coerceValue(myPointAttribs, value);
522 coerceValue(myVertAttribs, value);
525 coerceValue(myPrimAttribs, value);
528 coerceValue(myDetailAttribs, value);
531 coerceValue(myDensityScale, value);
534 coerceValue(myUseAreaForVolumes, value);
537 coerceValue(myScaleRadiiBy, value);
540 coerceValue(myUseMaxRadius, value);
543 coerceValue(myMaxRadius, value);
550 { doSetParmValue(idx, instance, value); }
552 { doSetParmValue(idx, instance, value); }
554 { doSetParmValue(idx, instance, value); }
556 { doSetParmValue(idx, instance, value); }
558 { doSetParmValue(idx, instance, value); }
560 { doSetParmValue(idx, instance, value); }
562 { doSetParmValue(idx, instance, value); }
564 { doSetParmValue(idx, instance, value); }
566 { doSetParmValue(idx, instance, value); }
568 { doSetParmValue(idx, instance, value); }
570 { doSetParmValue(idx, instance, value); }
586 if (fieldnum.
size() < 1)
595 return "usedensityattrib";
597 return "densityattrib";
599 return "useareaattrib";
609 return "usedensitytexture";
611 return "densitytexture";
613 return "primcountattrib";
615 return "useemergencylimit";
617 return "emergencylimit";
621 return "overrideprimseed";
623 return "primseedattrib";
625 return "randomizeorder";
627 return "relaxpoints";
629 return "relaxiterations";
631 return "useprimnumattrib";
633 return "primnumattrib";
635 return "useprimuvwattrib";
637 return "primuvwattrib";
639 return "useoutputdensityattrib";
641 return "outputdensityattrib";
643 return "useoutputradiusattrib";
645 return "outputradiusattrib";
647 return "radiusintexturespace";
649 return "pointattribs";
651 return "vertattribs";
653 return "primattribs";
655 return "detailattribs";
657 return "densityscale";
659 return "useareaforvolumes";
661 return "scaleradiiby";
663 return "usemaxradius";
673 if (fieldnum.
size() < 1)
674 return PARM_UNSUPPORTED;
755 return PARM_UNSUPPORTED;
791 loadData(is, rampdata);
809 int typelen = colon - data.
buffer();
823 {
int64 iv =
v; UTwrite(os, &iv); }
825 { UTwrite<fpreal64>(os, &
v); }
827 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y()); }
829 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
830 UTwrite<fpreal64>(os, &v.
z()); }
832 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
833 UTwrite<fpreal64>(os, &v.
z()); UTwrite<fpreal64>(os, &v.
w()); }
845 if (s) s->save(ostr);
847 saveData(os, result);
854 ostr << s->getDataTypeToken();
859 saveData(os, result);
863 void save(std::ostream &os)
const
867 saveData(os, myGroup);
868 saveData(os, myGenerateBy);
869 saveData(os, myUseDensityAttrib);
870 saveData(os, myDensityAttrib);
871 saveData(os, myUseAreaAttrib);
872 saveData(os, myAreaAttrib);
873 saveData(os, myIndepVoxel);
874 saveData(os, myForceTotal);
875 saveData(os, myNpts);
876 saveData(os, myUseDensityTexture);
877 saveData(os, myDensityTexture);
878 saveData(os, myCountPerPrimAttrib);
879 saveData(os, myUseEmergencyLimit);
880 saveData(os, myEmergencyLimit);
881 saveData(os, mySeed);
882 saveData(os, myOverridePrimSeed);
883 saveData(os, myPrimSeedAttrib);
884 saveData(os, myRandomizeOrder);
885 saveData(os, myRelaxPoints);
886 saveData(os, myRelaxIterations);
887 saveData(os, myUsePrimNumAttrib);
888 saveData(os, myPrimNumAttrib);
889 saveData(os, myUsePrimUVWAttrib);
890 saveData(os, myPrimUVWAttrib);
891 saveData(os, myUseOutputDensityAttrib);
892 saveData(os, myOutputDensityAttrib);
893 saveData(os, myUseOutputRadiusAttrib);
894 saveData(os, myOutputRadiusAttrib);
895 saveData(os, myRadiusInTextureSpace);
896 saveData(os, myPointAttribs);
897 saveData(os, myVertAttribs);
898 saveData(os, myPrimAttribs);
899 saveData(os, myDetailAttribs);
900 saveData(os, myDensityScale);
901 saveData(os, myUseAreaForVolumes);
902 saveData(os, myScaleRadiiBy);
903 saveData(os, myUseMaxRadius);
904 saveData(os, myMaxRadius);
917 loadData(is, myGroup);
918 loadData(is, myGenerateBy);
919 loadData(is, myUseDensityAttrib);
920 loadData(is, myDensityAttrib);
921 loadData(is, myUseAreaAttrib);
922 loadData(is, myAreaAttrib);
923 loadData(is, myIndepVoxel);
924 loadData(is, myForceTotal);
925 loadData(is, myNpts);
926 loadData(is, myUseDensityTexture);
927 loadData(is, myDensityTexture);
928 loadData(is, myCountPerPrimAttrib);
929 loadData(is, myUseEmergencyLimit);
930 loadData(is, myEmergencyLimit);
931 loadData(is, mySeed);
932 loadData(is, myOverridePrimSeed);
933 loadData(is, myPrimSeedAttrib);
934 loadData(is, myRandomizeOrder);
935 loadData(is, myRelaxPoints);
936 loadData(is, myRelaxIterations);
937 loadData(is, myUsePrimNumAttrib);
938 loadData(is, myPrimNumAttrib);
939 loadData(is, myUsePrimUVWAttrib);
940 loadData(is, myPrimUVWAttrib);
941 loadData(is, myUseOutputDensityAttrib);
942 loadData(is, myOutputDensityAttrib);
943 loadData(is, myUseOutputRadiusAttrib);
944 loadData(is, myOutputRadiusAttrib);
945 loadData(is, myRadiusInTextureSpace);
946 loadData(is, myPointAttribs);
947 loadData(is, myVertAttribs);
948 loadData(is, myPrimAttribs);
949 loadData(is, myDetailAttribs);
950 loadData(is, myDensityScale);
951 loadData(is, myUseAreaForVolumes);
952 loadData(is, myScaleRadiiBy);
953 loadData(is, myUseMaxRadius);
954 loadData(is, myMaxRadius);
964 if (!thissop)
return getGroup();
966 OP_Utils::evalOpParm(result, thissop,
"group", cookparms.
getCookTime(), 0);
974 if (!thissop)
return getGenerateBy();
976 OP_Utils::evalOpParm(result, thissop,
"generateby", cookparms.
getCookTime(), 0);
984 if (!thissop)
return getUseDensityAttrib();
986 OP_Utils::evalOpParm(result, thissop,
"usedensityattrib", cookparms.
getCookTime(), 0);
994 if (!thissop)
return getDensityAttrib();
996 OP_Utils::evalOpParm(result, thissop,
"densityattrib", cookparms.
getCookTime(), 0);
1004 if (!thissop)
return getUseAreaAttrib();
1006 OP_Utils::evalOpParm(result, thissop,
"useareaattrib", cookparms.
getCookTime(), 0);
1014 if (!thissop)
return getAreaAttrib();
1016 OP_Utils::evalOpParm(result, thissop,
"areaattrib", cookparms.
getCookTime(), 0);
1024 if (!thissop)
return getIndepVoxel();
1026 OP_Utils::evalOpParm(result, thissop,
"indepvoxel", cookparms.
getCookTime(), 0);
1034 if (!thissop)
return getForceTotal();
1036 OP_Utils::evalOpParm(result, thissop,
"forcetotal", cookparms.
getCookTime(), 0);
1044 if (!thissop)
return getNpts();
1046 OP_Utils::evalOpParm(result, thissop,
"npts", cookparms.
getCookTime(), 0);
1054 if (!thissop)
return getUseDensityTexture();
1056 OP_Utils::evalOpParm(result, thissop,
"usedensitytexture", cookparms.
getCookTime(), 0);
1064 if (!thissop)
return getDensityTexture();
1066 OP_Utils::evalOpParm(result, thissop,
"densitytexture", cookparms.
getCookTime(), 0);
1074 if (!thissop)
return getCountPerPrimAttrib();
1076 OP_Utils::evalOpParm(result, thissop,
"primcountattrib", cookparms.
getCookTime(), 0);
1084 if (!thissop)
return getUseEmergencyLimit();
1086 OP_Utils::evalOpParm(result, thissop,
"useemergencylimit", cookparms.
getCookTime(), 0);
1094 if (!thissop)
return getEmergencyLimit();
1096 OP_Utils::evalOpParm(result, thissop,
"emergencylimit", cookparms.
getCookTime(), 0);
1104 if (!thissop)
return getSeed();
1106 OP_Utils::evalOpParm(result, thissop,
"seed", cookparms.
getCookTime(), 0);
1114 if (!thissop)
return getOverridePrimSeed();
1116 OP_Utils::evalOpParm(result, thissop,
"overrideprimseed", cookparms.
getCookTime(), 0);
1124 if (!thissop)
return getPrimSeedAttrib();
1126 OP_Utils::evalOpParm(result, thissop,
"primseedattrib", cookparms.
getCookTime(), 0);
1134 if (!thissop)
return getRandomizeOrder();
1136 OP_Utils::evalOpParm(result, thissop,
"randomizeorder", cookparms.
getCookTime(), 0);
1144 if (!thissop)
return getRelaxPoints();
1146 OP_Utils::evalOpParm(result, thissop,
"relaxpoints", cookparms.
getCookTime(), 0);
1154 if (!thissop)
return getRelaxIterations();
1156 OP_Utils::evalOpParm(result, thissop,
"relaxiterations", cookparms.
getCookTime(), 0);
1164 if (!thissop)
return getUsePrimNumAttrib();
1166 OP_Utils::evalOpParm(result, thissop,
"useprimnumattrib", cookparms.
getCookTime(), 0);
1174 if (!thissop)
return getPrimNumAttrib();
1176 OP_Utils::evalOpParm(result, thissop,
"primnumattrib", cookparms.
getCookTime(), 0);
1184 if (!thissop)
return getUsePrimUVWAttrib();
1186 OP_Utils::evalOpParm(result, thissop,
"useprimuvwattrib", cookparms.
getCookTime(), 0);
1194 if (!thissop)
return getPrimUVWAttrib();
1196 OP_Utils::evalOpParm(result, thissop,
"primuvwattrib", cookparms.
getCookTime(), 0);
1204 if (!thissop)
return getUseOutputDensityAttrib();
1206 OP_Utils::evalOpParm(result, thissop,
"useoutputdensityattrib", cookparms.
getCookTime(), 0);
1214 if (!thissop)
return getOutputDensityAttrib();
1216 OP_Utils::evalOpParm(result, thissop,
"outputdensityattrib", cookparms.
getCookTime(), 0);
1224 if (!thissop)
return getUseOutputRadiusAttrib();
1226 OP_Utils::evalOpParm(result, thissop,
"useoutputradiusattrib", cookparms.
getCookTime(), 0);
1234 if (!thissop)
return getOutputRadiusAttrib();
1236 OP_Utils::evalOpParm(result, thissop,
"outputradiusattrib", cookparms.
getCookTime(), 0);
1244 if (!thissop)
return getRadiusInTextureSpace();
1246 OP_Utils::evalOpParm(result, thissop,
"radiusintexturespace", cookparms.
getCookTime(), 0);
1254 if (!thissop)
return getPointAttribs();
1256 OP_Utils::evalOpParm(result, thissop,
"pointattribs", cookparms.
getCookTime(), 0);
1264 if (!thissop)
return getVertAttribs();
1266 OP_Utils::evalOpParm(result, thissop,
"vertattribs", cookparms.
getCookTime(), 0);
1274 if (!thissop)
return getPrimAttribs();
1276 OP_Utils::evalOpParm(result, thissop,
"primattribs", cookparms.
getCookTime(), 0);
1284 if (!thissop)
return getDetailAttribs();
1286 OP_Utils::evalOpParm(result, thissop,
"detailattribs", cookparms.
getCookTime(), 0);
1294 if (!thissop)
return getDensityScale();
1296 OP_Utils::evalOpParm(result, thissop,
"densityscale", cookparms.
getCookTime(), 0);
1304 if (!thissop)
return getUseAreaForVolumes();
1306 OP_Utils::evalOpParm(result, thissop,
"useareaforvolumes", cookparms.
getCookTime(), 0);
1314 if (!thissop)
return getScaleRadiiBy();
1316 OP_Utils::evalOpParm(result, thissop,
"scaleradiiby", cookparms.
getCookTime(), 0);
1324 if (!thissop)
return getUseMaxRadius();
1326 OP_Utils::evalOpParm(result, thissop,
"usemaxradius", cookparms.
getCookTime(), 0);
1334 if (!thissop)
return getMaxRadius();
1336 OP_Utils::evalOpParm(result, thissop,
"maxradius", cookparms.
getCookTime(), 0);
1343 bool myUseDensityAttrib;
1345 bool myUseAreaAttrib;
1350 bool myUseDensityTexture;
1353 bool myUseEmergencyLimit;
1354 int64 myEmergencyLimit;
1356 bool myOverridePrimSeed;
1358 bool myRandomizeOrder;
1360 int64 myRelaxIterations;
1361 bool myUsePrimNumAttrib;
1363 bool myUsePrimUVWAttrib;
1365 bool myUseOutputDensityAttrib;
1367 bool myUseOutputRadiusAttrib;
1369 bool myRadiusInTextureSpace;
1375 bool myUseAreaForVolumes;
1377 bool myUseMaxRadius;
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
bool getUseDensityAttrib() const
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 setIndepVoxel(bool val)
void setGroup(const UT_StringHolder &val)
bool getUsePrimNumAttrib() const
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
SOP_Node * getNode() const
bool getForceTotal() const
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)
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 buildFromOp(const SOP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
void setVertAttribs(const UT_StringHolder &val)
void setGenerateBy(GenerateBy val)
void copyFrom(const SOP_NodeParms *src) override
exint bread(int32 *buffer, exint asize=1)
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
GT_API const UT_StringHolder time
void loadFromOpSubclass(const LoadParms &loadparms) override
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
GLuint const GLfloat * val
void setDensityScale(fpreal64 val)
static void saveData(std::ostream &os, UT_Matrix3D v)
bool opUseOutputRadiusAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setUseOutputRadiusAttrib(bool val)
void setUseOutputDensityAttrib(bool val)
UT_StringHolder opOutputDensityAttrib(const SOP_NodeVerb::CookParms &cookparms) const
int64 getRelaxIterations() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
SYS_FORCE_INLINE const char * buffer() const
void setPrimUVWAttrib(const UT_StringHolder &val)
const SOP_GraphProxy * graph() const
void setForceTotal(bool val)
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
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
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
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
~SOP_Scatter_2_0Parms() override
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)
void setOutputDensityAttrib(const UT_StringHolder &val)
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
void setRelaxPoints(bool val)
ParmType getNestParmType(TempIndex fieldnum) const override
UT_StringHolder opDensityAttrib(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getAreaAttrib() const
bool getIndepVoxel() const
bool opUsePrimNumAttrib(const SOP_NodeVerb::CookParms &cookparms) const
bool getUseAreaForVolumes() 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
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.
GLint GLenum GLsizei GLint GLsizei const void * data
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
void setRandomizeOrder(bool val)
bool opIndepVoxel(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getDetailAttribs() const
const UT_StringHolder & getPrimAttribs() const
const UT_StringHolder & getGroup() const
bool getUsePrimUVWAttrib() 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
bool getRandomizeOrder() const
bool getUseDensityTexture() const
static void saveData(std::ostream &os, int64 v)
bool opUseAreaAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setCountPerPrimAttrib(const UT_StringHolder &val)
bool getUseOutputRadiusAttrib() const
bool getRelaxPoints() 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
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
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.
UT_StringHolder opPrimNumAttrib(const SOP_NodeVerb::CookParms &cookparms) const
GT_API const UT_StringHolder version
DEP_MicroNode * depnode() 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)
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)
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 setUseMaxRadius(bool val)
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
fpreal64 opScaleRadiiBy(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, fpreal64 &v)
Utility class for containing a color ramp.
UT_StringHolder opPointAttribs(const SOP_NodeVerb::CookParms &cookparms) const
bool getUseAreaAttrib() const
void setDetailAttribs(const UT_StringHolder &val)
fpreal64 getDensityScale() const
GLdouble GLdouble GLdouble r
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
void setUseDensityAttrib(bool val)
bool getRadiusInTextureSpace() const
fpreal64 getMaxRadius() const
bool opUseEmergencyLimit(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opCountPerPrimAttrib(const SOP_NodeVerb::CookParms &cookparms) const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
void setRadiusInTextureSpace(bool val)
int64 opEmergencyLimit(const SOP_NodeVerb::CookParms &cookparms) const
fpreal getCookTime() const
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
bool getUseEmergencyLimit() const
void setOutputRadiusAttrib(const UT_StringHolder &val)
void setPrimNumAttrib(const UT_StringHolder &val)
bool getUseMaxRadius() const
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
static void saveData(std::ostream &os, UT_Matrix2D v)
void setRelaxIterations(int64 val)
void setUseAreaAttrib(bool val)
static void saveData(std::ostream &os, bool v)
void setPrimSeedAttrib(const UT_StringHolder &val)
int64 getEmergencyLimit() const
int64 opRelaxIterations(const SOP_NodeVerb::CookParms &cookparms) const
bool getUseOutputDensityAttrib() const
static void loadData(UT_IStream &is, UT_Vector4D &v)
void setUsePrimNumAttrib(bool val)
GLsizei const GLfloat * value
void setOverridePrimSeed(bool val)
const OP_Context & context() const
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
void setUseEmergencyLimit(bool val)
SYS_FORCE_INLINE bool isstring() const
static void loadData(UT_IStream &is, UT_Matrix2D &v)
static void loadData(UT_IStream &is, UT_Vector3D &v)
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
bool getOverridePrimSeed() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
fpreal64 opDensityScale(const SOP_NodeVerb::CookParms &cookparms) const