23 namespace SOP_GroupCreateEnums
36 using namespace UT::Literal;
57 using namespace UT::Literal;
79 using namespace UT::Literal;
100 myGroupName =
"group1"_UTsh;
104 myBasegroup =
""_UTsh;
107 myGroupBounding =
false;
111 myIncludenotwhollycontained =
false;
113 myInvertvolume =
false;
114 myGroupNormal =
false;
115 myCamerapath =
""_UTsh;
117 myNonplanartol = 0.001;
120 myOppositenormals =
false;
121 myGroupEdges =
false;
122 myDominedgeangle =
false;
124 myDomaxedgeangle =
false;
126 myEdgeAngleBetweenEdges =
false;
127 myDominedgelen =
false;
129 myDomaxedgelen =
false;
133 myEdgeptgrp =
"0"_UTsh;
135 myBoundaryGroups =
false;
136 myGroupRandom =
false;
138 myUseseedattrib =
false;
139 mySeedattrib =
"id"_UTsh;
153 if (myGroupName != src.myGroupName)
return false;
154 if (myGrouptype != src.myGrouptype)
return false;
155 if (myMergeop != src.myMergeop)
return false;
156 if (myGroupBase != src.myGroupBase)
return false;
157 if (myBasegroup != src.myBasegroup)
return false;
158 if (myOrdered != src.myOrdered)
return false;
159 if (myGeotype != src.myGeotype)
return false;
160 if (myGroupBounding != src.myGroupBounding)
return false;
161 if (myBoundtype != src.myBoundtype)
return false;
162 if (mySize != src.mySize)
return false;
163 if (myT != src.myT)
return false;
164 if (myIncludenotwhollycontained != src.myIncludenotwhollycontained)
return false;
165 if (myIso != src.myIso)
return false;
166 if (myInvertvolume != src.myInvertvolume)
return false;
167 if (myGroupNormal != src.myGroupNormal)
return false;
168 if (myCamerapath != src.myCamerapath)
return false;
169 if (myNonplanar != src.myNonplanar)
return false;
170 if (myNonplanartol != src.myNonplanartol)
return false;
171 if (myDir != src.myDir)
return false;
172 if (myAngle != src.myAngle)
return false;
173 if (myOppositenormals != src.myOppositenormals)
return false;
174 if (myGroupEdges != src.myGroupEdges)
return false;
175 if (myDominedgeangle != src.myDominedgeangle)
return false;
176 if (myMinedgeangle != src.myMinedgeangle)
return false;
177 if (myDomaxedgeangle != src.myDomaxedgeangle)
return false;
178 if (myMaxedgeangle != src.myMaxedgeangle)
return false;
179 if (myEdgeAngleBetweenEdges != src.myEdgeAngleBetweenEdges)
return false;
180 if (myDominedgelen != src.myDominedgelen)
return false;
181 if (myMinedgelen != src.myMinedgelen)
return false;
182 if (myDomaxedgelen != src.myDomaxedgelen)
return false;
183 if (myMaxedgelen != src.myMaxedgelen)
return false;
184 if (myDodepth != src.myDodepth)
return false;
185 if (myEdgestep != src.myEdgestep)
return false;
186 if (myEdgeptgrp != src.myEdgeptgrp)
return false;
187 if (myUnshared != src.myUnshared)
return false;
188 if (myBoundaryGroups != src.myBoundaryGroups)
return false;
189 if (myGroupRandom != src.myGroupRandom)
return false;
190 if (myGlobalseed != src.myGlobalseed)
return false;
191 if (myUseseedattrib != src.myUseseedattrib)
return false;
192 if (mySeedattrib != src.mySeedattrib)
return false;
193 if (myPercent != src.myPercent)
return false;
209 myGroupName =
"group1"_UTsh;
211 graph->
evalOpParm(myGroupName, nodeidx,
"groupname", time, 0);
214 graph->
evalOpParm(myGrouptype, nodeidx,
"grouptype", time, 0);
217 graph->
evalOpParm(myMergeop, nodeidx,
"mergeop", time, 0);
220 graph->
evalOpParm(myGroupBase, nodeidx,
"groupbase", time, 0);
221 myBasegroup =
""_UTsh;
222 if (
true && ( (
true&&!(((getGroupBase()==0)))) ) )
223 graph->
evalOpParm(myBasegroup, nodeidx,
"basegroup", time, 0);
225 if (
true && ( (
true&&!(((getGroupBase()==0)))) ) )
226 graph->
evalOpParm(myOrdered, nodeidx,
"ordered", time, 0);
228 if (
true && ( (
true&&!(((getGroupBase()==0)))) ) )
229 graph->
evalOpParm(myGeotype, nodeidx,
"geotype", time, 0);
230 myGroupBounding =
false;
232 graph->
evalOpParm(myGroupBounding, nodeidx,
"groupbounding", time, 0);
234 if (
true && ( (
true&&!(((getGroupBounding()==0)))) ) )
235 graph->
evalOpParm(myBoundtype, nodeidx,
"boundtype", time, 0);
237 if (
true && ( (
true&&!(((getGroupBounding()==0))||((
int64(getBoundtype())!=0)&&(
int64(getBoundtype())!=1)))) ) )
238 graph->
evalOpParm(mySize, nodeidx,
"size", time, 0);
240 if (
true && ( (
true&&!(((getGroupBounding()==0))||((
int64(getBoundtype())!=0)&&(
int64(getBoundtype())!=1)))) ) )
241 graph->
evalOpParm(myT, nodeidx,
"t", time, 0);
242 myIncludenotwhollycontained =
false;
243 if (
true && ( (
true&&!(((getGroupBounding()==0))||((
int64(getBoundtype())!=0)&&(
int64(getBoundtype())!=1)&&(
int64(getBoundtype())!=4)))) ) )
244 graph->
evalOpParm(myIncludenotwhollycontained, nodeidx,
"includenotwhollycontained", time, 0);
246 if (
true && ( (
true&&!(((getGroupBounding()==0))||((
int64(getBoundtype())!=3)&&(
int64(getBoundtype())!=4)))) ) )
247 graph->
evalOpParm(myIso, nodeidx,
"iso", time, 0);
248 myInvertvolume =
false;
249 if (
true && ( (
true&&!(((getGroupBounding()==0))||((
int64(getBoundtype())!=3)&&(
int64(getBoundtype())!=4)))) ) )
250 graph->
evalOpParm(myInvertvolume, nodeidx,
"invertvolume", time, 0);
251 myGroupNormal =
false;
252 if (
true && ( (
true&&!(((
int64(getGrouptype())==3)))) ) )
253 graph->
evalOpParm(myGroupNormal, nodeidx,
"groupnormal", time, 0);
254 myCamerapath =
""_UTsh;
255 if (
true && ( (
true&&!(((
int64(getGrouptype())==3))||((getGroupNormal()==0))||((
int64(getGrouptype())==3)))) ) )
256 graph->
evalOpParm(myCamerapath, nodeidx,
"camerapath", time, 0);
258 if (
true && ( (
true&&!(((
int64(getGrouptype())!=0))||((
int64(getGrouptype())==3))||((getGroupNormal()==0))||((
int64(getGrouptype())==3)))) ) )
259 graph->
evalOpParm(myNonplanar, nodeidx,
"nonplanar", time, 0);
260 myNonplanartol = 0.001;
261 if (
true && ( (
true&&!(((
int64(getGrouptype())!=0))||((getNonplanar()==0))||((
int64(getGrouptype())==3))||((getGroupNormal()==0))||((
int64(getGrouptype())==3)))) ) )
262 graph->
evalOpParm(myNonplanartol, nodeidx,
"nonplanartol", time, 0);
264 if (
true && ( (
true&&!(((
int64(getGrouptype())==0)&&(getNonplanar()==1))||((getCamerapath()!=
""))||((
int64(getGrouptype())==3))||((getGroupNormal()==0))||((
int64(getGrouptype())==3)))) ) )
265 graph->
evalOpParm(myDir, nodeidx,
"dir", time, 0);
267 if (
true && ( (
true&&!(((
int64(getGrouptype())==0)&&(getNonplanar()==1))||((getCamerapath()!=
""))||((
int64(getGrouptype())==3))||((getGroupNormal()==0))||((
int64(getGrouptype())==3)))) ) )
268 graph->
evalOpParm(myAngle, nodeidx,
"angle", time, 0);
269 myOppositenormals =
false;
270 if (
true && ( (
true&&!(((
int64(getGrouptype())==3))||((getGroupNormal()==0))||((
int64(getGrouptype())==3)))) ) )
271 graph->
evalOpParm(myOppositenormals, nodeidx,
"oppositenormals", time, 0);
272 myGroupEdges =
false;
273 if (
true && ( (
true&&!(((
int64(getGrouptype())==3)))) ) )
274 graph->
evalOpParm(myGroupEdges, nodeidx,
"groupedges", time, 0);
275 myDominedgeangle =
false;
276 if (
true && ( (
true&&!(((
int64(getGrouptype())==1))||((
int64(getGrouptype())==3))||((getGroupEdges()==0))||((
int64(getGrouptype())==3)))) ) )
277 graph->
evalOpParm(myDominedgeangle, nodeidx,
"dominedgeangle", time, 0);
279 if (
true && ( (
true&&!(((
int64(getGrouptype())==1))||((getDominedgeangle()==0))||((
int64(getGrouptype())==3))||((getGroupEdges()==0))||((
int64(getGrouptype())==3)))) ) )
280 graph->
evalOpParm(myMinedgeangle, nodeidx,
"minedgeangle", time, 0);
281 myDomaxedgeangle =
false;
282 if (
true && ( (
true&&!(((
int64(getGrouptype())==1))||((
int64(getGrouptype())==3))||((getGroupEdges()==0))||((
int64(getGrouptype())==3)))) ) )
283 graph->
evalOpParm(myDomaxedgeangle, nodeidx,
"domaxedgeangle", time, 0);
285 if (
true && ( (
true&&!(((
int64(getGrouptype())==1))||((getDomaxedgeangle()==0))||((
int64(getGrouptype())==3))||((getGroupEdges()==0))||((
int64(getGrouptype())==3)))) ) )
286 graph->
evalOpParm(myMaxedgeangle, nodeidx,
"maxedgeangle", time, 0);
287 myEdgeAngleBetweenEdges =
false;
288 if (
true && ( (
true&&!(((
int64(getGrouptype())!=2))||((
int64(getGrouptype())==3))||((getGroupEdges()==0))||((
int64(getGrouptype())==3)))) ) )
289 graph->
evalOpParm(myEdgeAngleBetweenEdges, nodeidx,
"edgeanglebetweenedges", time, 0);
290 myDominedgelen =
false;
291 if (
true && ( (
true&&!(((
int64(getGrouptype())!=2))||((
int64(getGrouptype())==3))||((getGroupEdges()==0))||((
int64(getGrouptype())==3)))) ) )
292 graph->
evalOpParm(myDominedgelen, nodeidx,
"dominedgelen", time, 0);
294 if (
true && ( (
true&&!(((
int64(getGrouptype())!=2))||((getDominedgelen()==0))||((
int64(getGrouptype())==3))||((getGroupEdges()==0))||((
int64(getGrouptype())==3)))) ) )
295 graph->
evalOpParm(myMinedgelen, nodeidx,
"minedgelen", time, 0);
296 myDomaxedgelen =
false;
297 if (
true && ( (
true&&!(((
int64(getGrouptype())!=2))||((
int64(getGrouptype())==3))||((getGroupEdges()==0))||((
int64(getGrouptype())==3)))) ) )
298 graph->
evalOpParm(myDomaxedgelen, nodeidx,
"domaxedgelen", time, 0);
300 if (
true && ( (
true&&!(((
int64(getGrouptype())!=2))||((getDomaxedgelen()==0))||((
int64(getGrouptype())==3))||((getGroupEdges()==0))||((
int64(getGrouptype())==3)))) ) )
301 graph->
evalOpParm(myMaxedgelen, nodeidx,
"maxedgelen", time, 0);
303 if (
true && ( (
true&&!(((
int64(getGrouptype())!=1))||((
int64(getGrouptype())==3))||((getGroupEdges()==0))||((
int64(getGrouptype())==3)))) ) )
304 graph->
evalOpParm(myDodepth, nodeidx,
"dodepth", time, 0);
306 if (
true && ( (
true&&!(((
int64(getGrouptype())!=1))||((getDodepth()==0))||((
int64(getGrouptype())==3))||((getGroupEdges()==0))||((
int64(getGrouptype())==3)))) ) )
307 graph->
evalOpParm(myEdgestep, nodeidx,
"edgestep", time, 0);
308 myEdgeptgrp =
"0"_UTsh;
309 if (
true && ( (
true&&!(((
int64(getGrouptype())!=1))||((getDodepth()==0))||((
int64(getGrouptype())==3))||((getGroupEdges()==0))||((
int64(getGrouptype())==3)))) ) )
310 graph->
evalOpParm(myEdgeptgrp, nodeidx,
"edgeptgrp", time, 0);
312 if (
true && ( (
true&&!(((
int64(getGrouptype())==3))||((getGroupEdges()==0))||((
int64(getGrouptype())==3)))) ) )
313 graph->
evalOpParm(myUnshared, nodeidx,
"unshared", time, 0);
314 myBoundaryGroups =
false;
315 if (
true && ( (
true&&!(((
int64(getGrouptype())!=1))||((getUnshared()==0))||((
int64(getGrouptype())==3))||((getGroupEdges()==0))||((
int64(getGrouptype())==3)))) ) )
316 graph->
evalOpParm(myBoundaryGroups, nodeidx,
"boundarygroups", time, 0);
317 myGroupRandom =
false;
319 graph->
evalOpParm(myGroupRandom, nodeidx,
"grouprandom", time, 0);
321 if (
true && ( (
true&&!(((getGroupRandom()==0)))) ) )
322 graph->
evalOpParm(myGlobalseed, nodeidx,
"globalseed", time, 0);
323 myUseseedattrib =
false;
324 if (
true && ( (
true&&!(((getGroupRandom()==0)))) ) )
325 graph->
evalOpParm(myUseseedattrib, nodeidx,
"useseedattrib", time, 0);
326 mySeedattrib =
"id"_UTsh;
327 if (
true && ( (
true&&!(((getUseseedattrib()==0))||((getGroupRandom()==0)))) ) )
328 graph->
evalOpParm(mySeedattrib, nodeidx,
"seedattrib", time, 0);
330 if (
true && ( (
true&&!(((getGroupRandom()==0)))) ) )
331 graph->
evalOpParm(myPercent, nodeidx,
"percent", time, 0);
347 template <
typename T>
354 if (idx.
size() != instance.
size()+1)
359 coerceValue(value, myGroupName);
362 coerceValue(value, myGrouptype);
365 coerceValue(value, myMergeop);
368 coerceValue(value, myGroupBase);
371 coerceValue(value, myBasegroup);
374 coerceValue(value, myOrdered);
377 coerceValue(value, myGeotype);
380 coerceValue(value, myGroupBounding);
383 coerceValue(value, myBoundtype);
386 coerceValue(value, mySize);
389 coerceValue(value, myT);
392 coerceValue(value, myIncludenotwhollycontained);
395 coerceValue(value, myIso);
398 coerceValue(value, myInvertvolume);
401 coerceValue(value, myGroupNormal);
404 coerceValue(value, myCamerapath);
407 coerceValue(value, myNonplanar);
410 coerceValue(value, myNonplanartol);
413 coerceValue(value, myDir);
416 coerceValue(value, myAngle);
419 coerceValue(value, myOppositenormals);
422 coerceValue(value, myGroupEdges);
425 coerceValue(value, myDominedgeangle);
428 coerceValue(value, myMinedgeangle);
431 coerceValue(value, myDomaxedgeangle);
434 coerceValue(value, myMaxedgeangle);
437 coerceValue(value, myEdgeAngleBetweenEdges);
440 coerceValue(value, myDominedgelen);
443 coerceValue(value, myMinedgelen);
446 coerceValue(value, myDomaxedgelen);
449 coerceValue(value, myMaxedgelen);
452 coerceValue(value, myDodepth);
455 coerceValue(value, myEdgestep);
458 coerceValue(value, myEdgeptgrp);
461 coerceValue(value, myUnshared);
464 coerceValue(value, myBoundaryGroups);
467 coerceValue(value, myGroupRandom);
470 coerceValue(value, myGlobalseed);
473 coerceValue(value, myUseseedattrib);
476 coerceValue(value, mySeedattrib);
479 coerceValue(value, myPercent);
495 { doGetParmValue(idx, instance, value); }
497 { doGetParmValue(idx, instance, value); }
499 { doGetParmValue(idx, instance, value); }
501 { doGetParmValue(idx, instance, value); }
503 { doGetParmValue(idx, instance, value); }
505 { doGetParmValue(idx, instance, value); }
507 { doGetParmValue(idx, instance, value); }
509 { doGetParmValue(idx, instance, value); }
511 { doGetParmValue(idx, instance, value); }
513 { doGetParmValue(idx, instance, value); }
515 { doGetParmValue(idx, instance, value); }
517 template <
typename T>
524 if (idx.
size() != instance.
size()+1)
529 coerceValue(myGroupName, ( ( value ) ));
532 coerceValue(myGrouptype, clampMinValue(0, clampMaxValue(3, value ) ));
535 coerceValue(myMergeop, clampMinValue(0, clampMaxValue(3, value ) ));
538 coerceValue(myGroupBase, ( ( value ) ));
541 coerceValue(myBasegroup, ( ( value ) ));
544 coerceValue(myOrdered, ( ( value ) ));
547 coerceValue(myGeotype, ( ( value ) ));
550 coerceValue(myGroupBounding, ( ( value ) ));
553 coerceValue(myBoundtype, clampMinValue(0, clampMaxValue(4, value ) ));
556 coerceValue(mySize, ( ( value ) ));
559 coerceValue(myT, ( ( value ) ));
562 coerceValue(myIncludenotwhollycontained, ( ( value ) ));
565 coerceValue(myIso, ( ( value ) ));
568 coerceValue(myInvertvolume, ( ( value ) ));
571 coerceValue(myGroupNormal, ( ( value ) ));
574 coerceValue(myCamerapath, ( ( value ) ));
577 coerceValue(myNonplanar, ( ( value ) ));
580 coerceValue(myNonplanartol, clampMinValue(0, ( value ) ));
583 coerceValue(myDir, ( ( value ) ));
586 coerceValue(myAngle, clampMinValue(0, clampMaxValue(180, value ) ));
589 coerceValue(myOppositenormals, ( ( value ) ));
592 coerceValue(myGroupEdges, ( ( value ) ));
595 coerceValue(myDominedgeangle, ( ( value ) ));
598 coerceValue(myMinedgeangle, ( ( value ) ));
601 coerceValue(myDomaxedgeangle, ( ( value ) ));
604 coerceValue(myMaxedgeangle, ( ( value ) ));
607 coerceValue(myEdgeAngleBetweenEdges, ( ( value ) ));
610 coerceValue(myDominedgelen, ( ( value ) ));
613 coerceValue(myMinedgelen, clampMinValue(0, ( value ) ));
616 coerceValue(myDomaxedgelen, ( ( value ) ));
619 coerceValue(myMaxedgelen, clampMinValue(0, ( value ) ));
622 coerceValue(myDodepth, ( ( value ) ));
625 coerceValue(myEdgestep, clampMinValue(0, ( value ) ));
628 coerceValue(myEdgeptgrp, ( ( value ) ));
631 coerceValue(myUnshared, ( ( value ) ));
634 coerceValue(myBoundaryGroups, ( ( value ) ));
637 coerceValue(myGroupRandom, ( ( value ) ));
640 coerceValue(myGlobalseed, ( ( value ) ));
643 coerceValue(myUseseedattrib, ( ( value ) ));
646 coerceValue(mySeedattrib, ( ( value ) ));
649 coerceValue(myPercent, clampMinValue(0, clampMaxValue(100, value ) ));
656 { doSetParmValue(idx, instance, value); }
658 { doSetParmValue(idx, instance, value); }
660 { doSetParmValue(idx, instance, value); }
662 { doSetParmValue(idx, instance, value); }
664 { doSetParmValue(idx, instance, value); }
666 { doSetParmValue(idx, instance, value); }
668 { doSetParmValue(idx, instance, value); }
670 { doSetParmValue(idx, instance, value); }
672 { doSetParmValue(idx, instance, value); }
674 { doSetParmValue(idx, instance, value); }
676 { doSetParmValue(idx, instance, value); }
692 if (fieldnum.
size() < 1)
711 return "groupbounding";
719 return "includenotwhollycontained";
723 return "invertvolume";
725 return "groupnormal";
731 return "nonplanartol";
737 return "oppositenormals";
741 return "dominedgeangle";
743 return "minedgeangle";
745 return "domaxedgeangle";
747 return "maxedgeangle";
749 return "edgeanglebetweenedges";
751 return "dominedgelen";
755 return "domaxedgelen";
767 return "boundarygroups";
769 return "grouprandom";
773 return "useseedattrib";
785 if (fieldnum.
size() < 1)
786 return PARM_UNSUPPORTED;
873 return PARM_UNSUPPORTED;
909 loadData(is, rampdata);
927 int typelen = colon - data.
buffer();
941 {
int64 iv =
v; UTwrite(os, &iv); }
943 { UTwrite<fpreal64>(os, &
v); }
945 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y()); }
947 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
948 UTwrite<fpreal64>(os, &v.
z()); }
950 { UTwrite<fpreal64>(os, &v.
x()); UTwrite<fpreal64>(os, &v.
y());
951 UTwrite<fpreal64>(os, &v.
z()); UTwrite<fpreal64>(os, &v.
w()); }
963 if (s) s->save(ostr);
965 saveData(os, result);
972 ostr << s->getDataTypeToken();
977 saveData(os, result);
981 void save(std::ostream &os)
const
985 saveData(os, myGroupName);
986 saveData(os, myGrouptype);
987 saveData(os, myMergeop);
988 saveData(os, myGroupBase);
989 saveData(os, myBasegroup);
990 saveData(os, myOrdered);
991 saveData(os, myGeotype);
992 saveData(os, myGroupBounding);
993 saveData(os, myBoundtype);
994 saveData(os, mySize);
996 saveData(os, myIncludenotwhollycontained);
998 saveData(os, myInvertvolume);
999 saveData(os, myGroupNormal);
1000 saveData(os, myCamerapath);
1001 saveData(os, myNonplanar);
1002 saveData(os, myNonplanartol);
1003 saveData(os, myDir);
1004 saveData(os, myAngle);
1005 saveData(os, myOppositenormals);
1006 saveData(os, myGroupEdges);
1007 saveData(os, myDominedgeangle);
1008 saveData(os, myMinedgeangle);
1009 saveData(os, myDomaxedgeangle);
1010 saveData(os, myMaxedgeangle);
1011 saveData(os, myEdgeAngleBetweenEdges);
1012 saveData(os, myDominedgelen);
1013 saveData(os, myMinedgelen);
1014 saveData(os, myDomaxedgelen);
1015 saveData(os, myMaxedgelen);
1016 saveData(os, myDodepth);
1017 saveData(os, myEdgestep);
1018 saveData(os, myEdgeptgrp);
1019 saveData(os, myUnshared);
1020 saveData(os, myBoundaryGroups);
1021 saveData(os, myGroupRandom);
1022 saveData(os, myGlobalseed);
1023 saveData(os, myUseseedattrib);
1024 saveData(os, mySeedattrib);
1025 saveData(os, myPercent);
1038 loadData(is, myGroupName);
1039 loadData(is, myGrouptype);
1040 loadData(is, myMergeop);
1041 loadData(is, myGroupBase);
1042 loadData(is, myBasegroup);
1043 loadData(is, myOrdered);
1044 loadData(is, myGeotype);
1045 loadData(is, myGroupBounding);
1046 loadData(is, myBoundtype);
1047 loadData(is, mySize);
1049 loadData(is, myIncludenotwhollycontained);
1050 loadData(is, myIso);
1051 loadData(is, myInvertvolume);
1052 loadData(is, myGroupNormal);
1053 loadData(is, myCamerapath);
1054 loadData(is, myNonplanar);
1055 loadData(is, myNonplanartol);
1056 loadData(is, myDir);
1057 loadData(is, myAngle);
1058 loadData(is, myOppositenormals);
1059 loadData(is, myGroupEdges);
1060 loadData(is, myDominedgeangle);
1061 loadData(is, myMinedgeangle);
1062 loadData(is, myDomaxedgeangle);
1063 loadData(is, myMaxedgeangle);
1064 loadData(is, myEdgeAngleBetweenEdges);
1065 loadData(is, myDominedgelen);
1066 loadData(is, myMinedgelen);
1067 loadData(is, myDomaxedgelen);
1068 loadData(is, myMaxedgelen);
1069 loadData(is, myDodepth);
1070 loadData(is, myEdgestep);
1071 loadData(is, myEdgeptgrp);
1072 loadData(is, myUnshared);
1073 loadData(is, myBoundaryGroups);
1074 loadData(is, myGroupRandom);
1075 loadData(is, myGlobalseed);
1076 loadData(is, myUseseedattrib);
1077 loadData(is, mySeedattrib);
1078 loadData(is, myPercent);
1088 if (!thissop)
return getGroupName();
1090 OP_Utils::evalOpParm(result, thissop,
"groupname", cookparms.
getCookTime(), 0);
1098 if (!thissop)
return getGrouptype();
1100 OP_Utils::evalOpParm(result, thissop,
"grouptype", cookparms.
getCookTime(), 0);
1108 if (!thissop)
return getMergeop();
1110 OP_Utils::evalOpParm(result, thissop,
"mergeop", cookparms.
getCookTime(), 0);
1118 if (!thissop)
return getGroupBase();
1120 OP_Utils::evalOpParm(result, thissop,
"groupbase", cookparms.
getCookTime(), 0);
1128 if (!thissop)
return getBasegroup();
1130 OP_Utils::evalOpParm(result, thissop,
"basegroup", cookparms.
getCookTime(), 0);
1138 if (!thissop)
return getOrdered();
1140 OP_Utils::evalOpParm(result, thissop,
"ordered", cookparms.
getCookTime(), 0);
1148 if (!thissop)
return getGeotype();
1150 OP_Utils::evalOpParm(result, thissop,
"geotype", cookparms.
getCookTime(), 0);
1158 if (!thissop)
return getGroupBounding();
1160 OP_Utils::evalOpParm(result, thissop,
"groupbounding", cookparms.
getCookTime(), 0);
1168 if (!thissop)
return getBoundtype();
1170 OP_Utils::evalOpParm(result, thissop,
"boundtype", cookparms.
getCookTime(), 0);
1178 if (!thissop)
return getSize();
1180 OP_Utils::evalOpParm(result, thissop,
"size", cookparms.
getCookTime(), 0);
1188 if (!thissop)
return getT();
1190 OP_Utils::evalOpParm(result, thissop,
"t", cookparms.
getCookTime(), 0);
1198 if (!thissop)
return getIncludenotwhollycontained();
1200 OP_Utils::evalOpParm(result, thissop,
"includenotwhollycontained", cookparms.
getCookTime(), 0);
1208 if (!thissop)
return getIso();
1210 OP_Utils::evalOpParm(result, thissop,
"iso", cookparms.
getCookTime(), 0);
1218 if (!thissop)
return getInvertvolume();
1220 OP_Utils::evalOpParm(result, thissop,
"invertvolume", cookparms.
getCookTime(), 0);
1228 if (!thissop)
return getGroupNormal();
1230 OP_Utils::evalOpParm(result, thissop,
"groupnormal", cookparms.
getCookTime(), 0);
1238 if (!thissop)
return getCamerapath();
1240 OP_Utils::evalOpParm(result, thissop,
"camerapath", cookparms.
getCookTime(), 0);
1248 if (!thissop)
return getNonplanar();
1250 OP_Utils::evalOpParm(result, thissop,
"nonplanar", cookparms.
getCookTime(), 0);
1258 if (!thissop)
return getNonplanartol();
1260 OP_Utils::evalOpParm(result, thissop,
"nonplanartol", cookparms.
getCookTime(), 0);
1268 if (!thissop)
return getDir();
1270 OP_Utils::evalOpParm(result, thissop,
"dir", cookparms.
getCookTime(), 0);
1278 if (!thissop)
return getAngle();
1280 OP_Utils::evalOpParm(result, thissop,
"angle", cookparms.
getCookTime(), 0);
1288 if (!thissop)
return getOppositenormals();
1290 OP_Utils::evalOpParm(result, thissop,
"oppositenormals", cookparms.
getCookTime(), 0);
1298 if (!thissop)
return getGroupEdges();
1300 OP_Utils::evalOpParm(result, thissop,
"groupedges", cookparms.
getCookTime(), 0);
1308 if (!thissop)
return getDominedgeangle();
1310 OP_Utils::evalOpParm(result, thissop,
"dominedgeangle", cookparms.
getCookTime(), 0);
1318 if (!thissop)
return getMinedgeangle();
1320 OP_Utils::evalOpParm(result, thissop,
"minedgeangle", cookparms.
getCookTime(), 0);
1328 if (!thissop)
return getDomaxedgeangle();
1330 OP_Utils::evalOpParm(result, thissop,
"domaxedgeangle", cookparms.
getCookTime(), 0);
1338 if (!thissop)
return getMaxedgeangle();
1340 OP_Utils::evalOpParm(result, thissop,
"maxedgeangle", cookparms.
getCookTime(), 0);
1348 if (!thissop)
return getEdgeAngleBetweenEdges();
1350 OP_Utils::evalOpParm(result, thissop,
"edgeanglebetweenedges", cookparms.
getCookTime(), 0);
1358 if (!thissop)
return getDominedgelen();
1360 OP_Utils::evalOpParm(result, thissop,
"dominedgelen", cookparms.
getCookTime(), 0);
1368 if (!thissop)
return getMinedgelen();
1370 OP_Utils::evalOpParm(result, thissop,
"minedgelen", cookparms.
getCookTime(), 0);
1378 if (!thissop)
return getDomaxedgelen();
1380 OP_Utils::evalOpParm(result, thissop,
"domaxedgelen", cookparms.
getCookTime(), 0);
1388 if (!thissop)
return getMaxedgelen();
1390 OP_Utils::evalOpParm(result, thissop,
"maxedgelen", cookparms.
getCookTime(), 0);
1398 if (!thissop)
return getDodepth();
1400 OP_Utils::evalOpParm(result, thissop,
"dodepth", cookparms.
getCookTime(), 0);
1408 if (!thissop)
return getEdgestep();
1410 OP_Utils::evalOpParm(result, thissop,
"edgestep", cookparms.
getCookTime(), 0);
1418 if (!thissop)
return getEdgeptgrp();
1420 OP_Utils::evalOpParm(result, thissop,
"edgeptgrp", cookparms.
getCookTime(), 0);
1428 if (!thissop)
return getUnshared();
1430 OP_Utils::evalOpParm(result, thissop,
"unshared", cookparms.
getCookTime(), 0);
1438 if (!thissop)
return getBoundaryGroups();
1440 OP_Utils::evalOpParm(result, thissop,
"boundarygroups", cookparms.
getCookTime(), 0);
1448 if (!thissop)
return getGroupRandom();
1450 OP_Utils::evalOpParm(result, thissop,
"grouprandom", cookparms.
getCookTime(), 0);
1458 if (!thissop)
return getGlobalseed();
1460 OP_Utils::evalOpParm(result, thissop,
"globalseed", cookparms.
getCookTime(), 0);
1468 if (!thissop)
return getUseseedattrib();
1470 OP_Utils::evalOpParm(result, thissop,
"useseedattrib", cookparms.
getCookTime(), 0);
1478 if (!thissop)
return getSeedattrib();
1480 OP_Utils::evalOpParm(result, thissop,
"seedattrib", cookparms.
getCookTime(), 0);
1488 if (!thissop)
return getPercent();
1490 OP_Utils::evalOpParm(result, thissop,
"percent", cookparms.
getCookTime(), 0);
1502 bool myGroupBounding;
1506 bool myIncludenotwhollycontained;
1508 bool myInvertvolume;
1515 bool myOppositenormals;
1517 bool myDominedgeangle;
1519 bool myDomaxedgeangle;
1521 bool myEdgeAngleBetweenEdges;
1522 bool myDominedgelen;
1524 bool myDomaxedgelen;
1530 bool myBoundaryGroups;
1533 bool myUseseedattrib;
void setIncludenotwhollycontained(bool val)
bool getEdgeAngleBetweenEdges() const
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
static void saveData(std::ostream &os, UT_StringHolder s)
void setMaxedgeangle(fpreal64 val)
fpreal64 getPercent() const
bool opUnshared(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
const UT_StringHolder & getGroupName() const
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
static void loadData(UT_IStream &is, bool &v)
const UT_StringHolder & getCamerapath() const
SOP_Node * getNode() const
void setGrouptype(Grouptype val)
bool operator!=(const SOP_GroupCreateParms &src) const
void setDir(UT_Vector3D val)
static void saveData(std::ostream &os, UT_Matrix4D v)
bool opGroupRandom(const SOP_NodeVerb::CookParms &cookparms) const
void setGeotype(int64 val)
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
fpreal64 opMaxedgeangle(const SOP_NodeVerb::CookParms &cookparms) const
void setBasegroup(const UT_StringHolder &val)
void setSize(UT_Vector3D val)
exint getNestNumParms(TempIndex idx) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
static void saveData(std::ostream &os, int64 v)
exint bread(int32 *buffer, exint asize=1)
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
UT_Vector3D opDir(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, bool v)
void setGroupBounding(bool val)
bool opInvertvolume(const SOP_NodeVerb::CookParms &cookparms) const
bool opDomaxedgelen(const SOP_NodeVerb::CookParms &cookparms) const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
bool getDomaxedgelen() const
UT_StringHolder opEdgeptgrp(const SOP_NodeVerb::CookParms &cookparms) const
const OP_Context & context() const
static void loadData(UT_IStream &is, UT_Vector3D &v)
constexpr SYS_FORCE_INLINE T & z() noexcept
void setGroupName(const UT_StringHolder &val)
void setEdgeAngleBetweenEdges(bool val)
bool opDominedgelen(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Matrix2D v)
void setMinedgeangle(fpreal64 val)
void setCamerapath(const UT_StringHolder &val)
UT_StringHolder opSeedattrib(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const SOP_GroupCreateParms &src) const
SYS_FORCE_INLINE const char * buffer() const
Boundtype getBoundtype() const
void setInvertvolume(bool val)
static void loadData(UT_IStream &is, UT_Vector4D &v)
bool opGroupEdges(const SOP_NodeVerb::CookParms &cookparms) const
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void setBoundaryGroups(bool val)
An output stream object that owns its own string buffer storage.
UT_Vector3D getDir() const
void setUseseedattrib(bool val)
bool opDominedgeangle(const SOP_NodeVerb::CookParms &cookparms) const
bool opDodepth(const SOP_NodeVerb::CookParms &cookparms) const
**But if you need a result
ParmType getNestParmType(TempIndex fieldnum) const override
bool getDominedgeangle() const
static void loadData(UT_IStream &is, UT_Vector2D &v)
void setDodepth(bool val)
const char * getNestParmName(TempIndex fieldnum) const override
fpreal64 getNonplanartol() const
fpreal64 opIso(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.
const UT_StringHolder & getEdgeptgrp() const
bool opGroupNormal(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
void setDominedgelen(bool val)
constexpr SYS_FORCE_INLINE T & x() noexcept
bool getGroupEdges() const
UT_Vector3D getSize() const
fpreal64 getAngle() const
UT_Vector3D opT(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & x() noexcept
fpreal64 opGlobalseed(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getBasegroup() const
static void loadData(UT_IStream &is, UT_Vector3I &v)
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
int64 opGeotype(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
void setBoundtype(Boundtype val)
void setIso(fpreal64 val)
void setOppositenormals(bool val)
fpreal64 opMaxedgelen(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
bool opDomaxedgeangle(const SOP_NodeVerb::CookParms &cookparms) const
bool getGroupBounding() const
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
void setUnshared(bool val)
static void loadData(UT_IStream &is, int64 &v)
constexpr SYS_FORCE_INLINE T & z() noexcept
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
const UT_StringHolder & getSeedattrib() const
fpreal64 opMinedgeangle(const SOP_NodeVerb::CookParms &cookparms) const
void copyFrom(const OP_NodeParms *src) override
void setDomaxedgeangle(bool val)
const OP_GraphProxy * graph() const
static void loadData(UT_IStream &is, UT_Vector4I &v)
void setOrdered(bool val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
bool opGroupBounding(const SOP_NodeVerb::CookParms &cookparms) const
bool getGroupNormal() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
bool opUseseedattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setNonplanar(bool val)
int64 opEdgestep(const SOP_NodeVerb::CookParms &cookparms) const
void setGroupBase(bool val)
int64 getEdgestep() const
bool isParmColorRamp(exint idx) const override
fpreal64 getGlobalseed() const
bool opOrdered(const SOP_NodeVerb::CookParms &cookparms) const
void setPercent(fpreal64 val)
bool getDomaxedgeangle() const
bool getOppositenormals() const
UT_Vector3T< fpreal64 > UT_Vector3D
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
UT_StringHolder opBasegroup(const SOP_NodeVerb::CookParms &cookparms) const
void setMinedgelen(fpreal64 val)
void setDominedgeangle(bool val)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
static void loadData(UT_IStream &is, UT_Matrix4D &v)
bool getBoundaryGroups() const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
Grouptype opGrouptype(const SOP_NodeVerb::CookParms &cookparms) const
bool getNonplanar() const
void setAngle(fpreal64 val)
Boundtype opBoundtype(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_Vector4D v)
void saveBinary(std::ostream &os) const
Save string to binary stream.
bool getIncludenotwhollycontained() const
void setMaxedgelen(fpreal64 val)
GT_API const UT_StringHolder version
fpreal64 getMaxedgeangle() const
static void loadData(UT_IStream &is, UT_Vector2I &v)
bool opNonplanar(const SOP_NodeVerb::CookParms &cookparms) const
bool getUseseedattrib() const
Mergeop getMergeop() const
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
void setGlobalseed(fpreal64 val)
SYS_FORCE_INLINE UT_StringHolder getToken(Grouptype enum_value)
static void loadData(UT_IStream &is, fpreal64 &v)
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
fpreal64 opPercent(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, PRM_DataItemHandle s)
UT_StringHolder opCamerapath(const SOP_NodeVerb::CookParms &cookparms) const
void setEdgeptgrp(const UT_StringHolder &val)
bool getInvertvolume() const
void save(std::ostream &os) const
DEP_MicroNode * depnode() const
void setSeedattrib(const UT_StringHolder &val)
LeafData & operator=(const LeafData &)=delete
Utility class for containing a color ramp.
fpreal64 opMinedgelen(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
static void loadData(UT_IStream &is, UT_Matrix2D &v)
Mergeop opMergeop(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & w() noexcept
void setDomaxedgelen(bool val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
static void saveData(std::ostream &os, UT_Vector3D v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
fpreal64 opNonplanartol(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_StringHolder &v)
fpreal getCookTime() const
void setMergeop(Mergeop val)
const char * findChar(int c) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
void setT(UT_Vector3D val)
void setNonplanartol(fpreal64 val)
bool getGroupRandom() const
bool getDominedgelen() const
static void saveData(std::ostream &os, UT_Vector2D v)
constexpr SYS_FORCE_INLINE T & y() noexcept
fpreal64 opAngle(const SOP_NodeVerb::CookParms &cookparms) const
void setEdgestep(int64 val)
bool getGroupBase() const
Grouptype getGrouptype() const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
bool opIncludenotwhollycontained(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getMinedgeangle() const
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
static void saveData(std::ostream &os, fpreal64 v)
bool opBoundaryGroups(const SOP_NodeVerb::CookParms &cookparms) const
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
fpreal64 getMaxedgelen() const
void setGroupRandom(bool val)
static void saveData(std::ostream &os, UT_Matrix3D v)
constexpr SYS_FORCE_INLINE T & y() noexcept
UT_StringHolder opGroupName(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE bool isstring() const
void loadFromOpSubclass(const LoadParms &loadparms) override
bool opGroupBase(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
void setGroupEdges(bool val)
bool opOppositenormals(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D opSize(const SOP_NodeVerb::CookParms &cookparms) const
bool load(UT_IStream &is)
bool opEdgeAngleBetweenEdges(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & x() noexcept
fpreal64 getMinedgelen() const
void setGroupNormal(bool val)