HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_GroupCreate.proto.h
Go to the documentation of this file.
1 /* Automagically Generated by generate_proto.py
2  * Do not Edit
3  */
4 #pragma once
5 
6 #include <SOP/SOP_API.h>
7 #include <SOP/SOP_NodeVerb.h>
8 #include <OP/OP_GraphProxy.h>
9 
10 #include <OP/OP_Utils.h>
11 #include <PRM/PRM_Parm.h>
12 #include <UT/UT_IStream.h>
13 #include <UT/UT_NTStreamUtil.h>
14 #include <UT/UT_Ramp.h>
15 #include <UT/UT_SharedPtr.h>
16 #include <UT/UT_StringHolder.h>
17 #include <UT/UT_StringStream.h>
18 #include <UT/UT_VectorTypes.h>
19 #include <UT/UT_EnvControl.h>
20 #include <SYS/SYS_Types.h>
21 
22 class DEP_MicroNode;
23 namespace SOP_GroupCreateEnums
24 {
25  enum class Grouptype
26  {
27  PRIMITIVE = 0,
28  POINT,
29  EDGE,
30  VERTEX
31  };
32 
34  getToken(Grouptype enum_value)
35  {
36  using namespace UT::Literal;
37  switch (enum_value) {
38  case Grouptype::PRIMITIVE: return "primitive"_sh;
39  case Grouptype::POINT: return "point"_sh;
40  case Grouptype::EDGE: return "edge"_sh;
41  case Grouptype::VERTEX: return "vertex"_sh;
42  default: UT_ASSERT(false); return ""_sh;
43  }
44  }
45 
46  enum class Mergeop
47  {
48  REPLACE = 0,
49  UNION,
50  INTERSECT,
51  SUBTRACT
52  };
53 
55  getToken(Mergeop enum_value)
56  {
57  using namespace UT::Literal;
58  switch (enum_value) {
59  case Mergeop::REPLACE: return "replace"_sh;
60  case Mergeop::UNION: return "union"_sh;
61  case Mergeop::INTERSECT: return "intersect"_sh;
62  case Mergeop::SUBTRACT: return "subtract"_sh;
63  default: UT_ASSERT(false); return ""_sh;
64  }
65  }
66 
67  enum class Boundtype
68  {
69  USEBBOX = 0,
70  USEBSPHERE,
71  USEBOBJECT,
72  USEBVOLUME,
74  };
75 
77  getToken(Boundtype enum_value)
78  {
79  using namespace UT::Literal;
80  switch (enum_value) {
81  case Boundtype::USEBBOX: return "usebbox"_sh;
82  case Boundtype::USEBSPHERE: return "usebsphere"_sh;
83  case Boundtype::USEBOBJECT: return "usebobject"_sh;
84  case Boundtype::USEBVOLUME: return "usebvolume"_sh;
85  case Boundtype::USEBCONVEX: return "usebconvex"_sh;
86  default: UT_ASSERT(false); return ""_sh;
87  }
88  }
89 
90 }
91 
92 
94 {
95 public:
96  static int version() { return 1; }
97 
99  {
100  myGroupName = "group1"_UTsh;
101  myGrouptype = 0;
102  myMergeop = 0;
103  myGroupBase = true;
104  myBasegroup = ""_UTsh;
105  myOrdered = false;
106  myGeotype = 0;
107  myGroupBounding = false;
108  myBoundtype = 0;
109  mySize = UT_Vector3D(1,1,1);
110  myT = UT_Vector3D(0,0,0);
111  myIncludenotwhollycontained = false;
112  myIso = 0;
113  myInvertvolume = false;
114  myGroupNormal = false;
115  myCamerapath = ""_UTsh;
116  myNonplanar = false;
117  myNonplanartol = 0.001;
118  myDir = UT_Vector3D(0,0,1);
119  myAngle = 180;
120  myOppositenormals = false;
121  myGroupEdges = false;
122  myDominedgeangle = false;
123  myMinedgeangle = 20;
124  myDomaxedgeangle = false;
125  myMaxedgeangle = 20;
126  myEdgeAngleBetweenEdges = false;
127  myDominedgelen = false;
128  myMinedgelen = 0;
129  myDomaxedgelen = false;
130  myMaxedgelen = 0;
131  myDodepth = false;
132  myEdgestep = 0;
133  myEdgeptgrp = "0"_UTsh;
134  myUnshared = false;
135  myBoundaryGroups = false;
136  myGroupRandom = false;
137  myGlobalseed = 1;
138  myUseseedattrib = false;
139  mySeedattrib = "id"_UTsh;
140  myPercent = 50;
141 
142  }
143 
144  explicit SOP_GroupCreateParms(const SOP_GroupCreateParms &) = default;
146  SOP_GroupCreateParms(SOP_GroupCreateParms &&) noexcept = default;
147  SOP_GroupCreateParms &operator=(SOP_GroupCreateParms &&) noexcept = default;
148 
149  ~SOP_GroupCreateParms() override {}
150 
152  {
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;
194 
195 
196  if (baseGetSignature() != src.baseGetSignature()) return false;
197 
198  return true;
199  }
201  {
202  return !operator==(src);
203  }
207 
208 
209 
210  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
211  {
212  myGroupName = "group1"_UTsh;
213  if (true)
214  graph->evalOpParm(myGroupName, nodeidx, "groupname", time, graph->isDirect()?nullptr:depnode);
215  myGrouptype = 0;
216  if (true)
217  graph->evalOpParm(myGrouptype, nodeidx, "grouptype", time, graph->isDirect()?nullptr:depnode);
218  myMergeop = 0;
219  if (true)
220  graph->evalOpParm(myMergeop, nodeidx, "mergeop", time, graph->isDirect()?nullptr:depnode);
221  myGroupBase = true;
222  if (true)
223  graph->evalOpParm(myGroupBase, nodeidx, "groupbase", time, graph->isDirect()?nullptr:depnode);
224  myBasegroup = ""_UTsh;
225  if (true && ( (true&&!(((getGroupBase()==0)))) ) )
226  graph->evalOpParm(myBasegroup, nodeidx, "basegroup", time, graph->isDirect()?nullptr:depnode);
227  myOrdered = false;
228  if (true && ( (true&&!(((getGroupBase()==0)))) ) )
229  graph->evalOpParm(myOrdered, nodeidx, "ordered", time, graph->isDirect()?nullptr:depnode);
230  myGeotype = 0;
231  if (true && ( (true&&!(((getGroupBase()==0)))) ) )
232  graph->evalOpParm(myGeotype, nodeidx, "geotype", time, graph->isDirect()?nullptr:depnode);
233  myGroupBounding = false;
234  if (true)
235  graph->evalOpParm(myGroupBounding, nodeidx, "groupbounding", time, graph->isDirect()?nullptr:depnode);
236  myBoundtype = 0;
237  if (true && ( (true&&!(((getGroupBounding()==0)))) ) )
238  graph->evalOpParm(myBoundtype, nodeidx, "boundtype", time, graph->isDirect()?nullptr:depnode);
239  mySize = UT_Vector3D(1,1,1);
240  if (true && ( (true&&!(((getGroupBounding()==0))||((int64(getBoundtype())!=0)&&(int64(getBoundtype())!=1)))) ) )
241  graph->evalOpParm(mySize, nodeidx, "size", time, graph->isDirect()?nullptr:depnode);
242  myT = UT_Vector3D(0,0,0);
243  if (true && ( (true&&!(((getGroupBounding()==0))||((int64(getBoundtype())!=0)&&(int64(getBoundtype())!=1)))) ) )
244  graph->evalOpParm(myT, nodeidx, "t", time, graph->isDirect()?nullptr:depnode);
245  myIncludenotwhollycontained = false;
246  if (true && ( (true&&!(((getGroupBounding()==0))||((int64(getBoundtype())!=0)&&(int64(getBoundtype())!=1)&&(int64(getBoundtype())!=4)))) ) )
247  graph->evalOpParm(myIncludenotwhollycontained, nodeidx, "includenotwhollycontained", time, graph->isDirect()?nullptr:depnode);
248  myIso = 0;
249  if (true && ( (true&&!(((getGroupBounding()==0))||((int64(getBoundtype())!=3)&&(int64(getBoundtype())!=4)))) ) )
250  graph->evalOpParm(myIso, nodeidx, "iso", time, graph->isDirect()?nullptr:depnode);
251  myInvertvolume = false;
252  if (true && ( (true&&!(((getGroupBounding()==0))||((int64(getBoundtype())!=3)&&(int64(getBoundtype())!=4)))) ) )
253  graph->evalOpParm(myInvertvolume, nodeidx, "invertvolume", time, graph->isDirect()?nullptr:depnode);
254  myGroupNormal = false;
255  if (true && ( (true&&!(((int64(getGrouptype())==3)))) ) )
256  graph->evalOpParm(myGroupNormal, nodeidx, "groupnormal", time, graph->isDirect()?nullptr:depnode);
257  myCamerapath = ""_UTsh;
258  if (true && ( (true&&!(((int64(getGrouptype())==3))||((getGroupNormal()==0))||((int64(getGrouptype())==3)))) ) )
259  graph->evalOpParm(myCamerapath, nodeidx, "camerapath", time, graph->isDirect()?nullptr:depnode);
260  myNonplanar = false;
261  if (true && ( (true&&!(((int64(getGrouptype())!=0))||((int64(getGrouptype())==3))||((getGroupNormal()==0))||((int64(getGrouptype())==3)))) ) )
262  graph->evalOpParm(myNonplanar, nodeidx, "nonplanar", time, graph->isDirect()?nullptr:depnode);
263  myNonplanartol = 0.001;
264  if (true && ( (true&&!(((int64(getGrouptype())!=0))||((getNonplanar()==0))||((int64(getGrouptype())==3))||((getGroupNormal()==0))||((int64(getGrouptype())==3)))) ) )
265  graph->evalOpParm(myNonplanartol, nodeidx, "nonplanartol", time, graph->isDirect()?nullptr:depnode);
266  myDir = UT_Vector3D(0,0,1);
267  if (true && ( (true&&!(((int64(getGrouptype())==0)&&(getNonplanar()==1))||((getCamerapath()!=""))||((int64(getGrouptype())==3))||((getGroupNormal()==0))||((int64(getGrouptype())==3)))) ) )
268  graph->evalOpParm(myDir, nodeidx, "dir", time, graph->isDirect()?nullptr:depnode);
269  myAngle = 180;
270  if (true && ( (true&&!(((int64(getGrouptype())==0)&&(getNonplanar()==1))||((getCamerapath()!=""))||((int64(getGrouptype())==3))||((getGroupNormal()==0))||((int64(getGrouptype())==3)))) ) )
271  graph->evalOpParm(myAngle, nodeidx, "angle", time, graph->isDirect()?nullptr:depnode);
272  myOppositenormals = false;
273  if (true && ( (true&&!(((int64(getGrouptype())==3))||((getGroupNormal()==0))||((int64(getGrouptype())==3)))) ) )
274  graph->evalOpParm(myOppositenormals, nodeidx, "oppositenormals", time, graph->isDirect()?nullptr:depnode);
275  myGroupEdges = false;
276  if (true && ( (true&&!(((int64(getGrouptype())==3)))) ) )
277  graph->evalOpParm(myGroupEdges, nodeidx, "groupedges", time, graph->isDirect()?nullptr:depnode);
278  myDominedgeangle = false;
279  if (true && ( (true&&!(((int64(getGrouptype())==1))||((int64(getGrouptype())==3))||((getGroupEdges()==0))||((int64(getGrouptype())==3)))) ) )
280  graph->evalOpParm(myDominedgeangle, nodeidx, "dominedgeangle", time, graph->isDirect()?nullptr:depnode);
281  myMinedgeangle = 20;
282  if (true && ( (true&&!(((int64(getGrouptype())==1))||((getDominedgeangle()==0))||((int64(getGrouptype())==3))||((getGroupEdges()==0))||((int64(getGrouptype())==3)))) ) )
283  graph->evalOpParm(myMinedgeangle, nodeidx, "minedgeangle", time, graph->isDirect()?nullptr:depnode);
284  myDomaxedgeangle = false;
285  if (true && ( (true&&!(((int64(getGrouptype())==1))||((int64(getGrouptype())==3))||((getGroupEdges()==0))||((int64(getGrouptype())==3)))) ) )
286  graph->evalOpParm(myDomaxedgeangle, nodeidx, "domaxedgeangle", time, graph->isDirect()?nullptr:depnode);
287  myMaxedgeangle = 20;
288  if (true && ( (true&&!(((int64(getGrouptype())==1))||((getDomaxedgeangle()==0))||((int64(getGrouptype())==3))||((getGroupEdges()==0))||((int64(getGrouptype())==3)))) ) )
289  graph->evalOpParm(myMaxedgeangle, nodeidx, "maxedgeangle", time, graph->isDirect()?nullptr:depnode);
290  myEdgeAngleBetweenEdges = false;
291  if (true && ( (true&&!(((int64(getGrouptype())!=2))||((int64(getGrouptype())==3))||((getGroupEdges()==0))||((int64(getGrouptype())==3)))) ) )
292  graph->evalOpParm(myEdgeAngleBetweenEdges, nodeidx, "edgeanglebetweenedges", time, graph->isDirect()?nullptr:depnode);
293  myDominedgelen = false;
294  if (true && ( (true&&!(((int64(getGrouptype())!=2))||((int64(getGrouptype())==3))||((getGroupEdges()==0))||((int64(getGrouptype())==3)))) ) )
295  graph->evalOpParm(myDominedgelen, nodeidx, "dominedgelen", time, graph->isDirect()?nullptr:depnode);
296  myMinedgelen = 0;
297  if (true && ( (true&&!(((int64(getGrouptype())!=2))||((getDominedgelen()==0))||((int64(getGrouptype())==3))||((getGroupEdges()==0))||((int64(getGrouptype())==3)))) ) )
298  graph->evalOpParm(myMinedgelen, nodeidx, "minedgelen", time, graph->isDirect()?nullptr:depnode);
299  myDomaxedgelen = false;
300  if (true && ( (true&&!(((int64(getGrouptype())!=2))||((int64(getGrouptype())==3))||((getGroupEdges()==0))||((int64(getGrouptype())==3)))) ) )
301  graph->evalOpParm(myDomaxedgelen, nodeidx, "domaxedgelen", time, graph->isDirect()?nullptr:depnode);
302  myMaxedgelen = 0;
303  if (true && ( (true&&!(((int64(getGrouptype())!=2))||((getDomaxedgelen()==0))||((int64(getGrouptype())==3))||((getGroupEdges()==0))||((int64(getGrouptype())==3)))) ) )
304  graph->evalOpParm(myMaxedgelen, nodeidx, "maxedgelen", time, graph->isDirect()?nullptr:depnode);
305  myDodepth = false;
306  if (true && ( (true&&!(((int64(getGrouptype())!=1))||((int64(getGrouptype())==3))||((getGroupEdges()==0))||((int64(getGrouptype())==3)))) ) )
307  graph->evalOpParm(myDodepth, nodeidx, "dodepth", time, graph->isDirect()?nullptr:depnode);
308  myEdgestep = 0;
309  if (true && ( (true&&!(((int64(getGrouptype())!=1))||((getDodepth()==0))||((int64(getGrouptype())==3))||((getGroupEdges()==0))||((int64(getGrouptype())==3)))) ) )
310  graph->evalOpParm(myEdgestep, nodeidx, "edgestep", time, graph->isDirect()?nullptr:depnode);
311  myEdgeptgrp = "0"_UTsh;
312  if (true && ( (true&&!(((int64(getGrouptype())!=1))||((getDodepth()==0))||((int64(getGrouptype())==3))||((getGroupEdges()==0))||((int64(getGrouptype())==3)))) ) )
313  graph->evalOpParm(myEdgeptgrp, nodeidx, "edgeptgrp", time, graph->isDirect()?nullptr:depnode);
314  myUnshared = false;
315  if (true && ( (true&&!(((int64(getGrouptype())==3))||((getGroupEdges()==0))||((int64(getGrouptype())==3)))) ) )
316  graph->evalOpParm(myUnshared, nodeidx, "unshared", time, graph->isDirect()?nullptr:depnode);
317  myBoundaryGroups = false;
318  if (true && ( (true&&!(((int64(getGrouptype())!=1))||((getUnshared()==0))||((int64(getGrouptype())==3))||((getGroupEdges()==0))||((int64(getGrouptype())==3)))) ) )
319  graph->evalOpParm(myBoundaryGroups, nodeidx, "boundarygroups", time, graph->isDirect()?nullptr:depnode);
320  myGroupRandom = false;
321  if (true)
322  graph->evalOpParm(myGroupRandom, nodeidx, "grouprandom", time, graph->isDirect()?nullptr:depnode);
323  myGlobalseed = 1;
324  if (true && ( (true&&!(((getGroupRandom()==0)))) ) )
325  graph->evalOpParm(myGlobalseed, nodeidx, "globalseed", time, graph->isDirect()?nullptr:depnode);
326  myUseseedattrib = false;
327  if (true && ( (true&&!(((getGroupRandom()==0)))) ) )
328  graph->evalOpParm(myUseseedattrib, nodeidx, "useseedattrib", time, graph->isDirect()?nullptr:depnode);
329  mySeedattrib = "id"_UTsh;
330  if (true && ( (true&&!(((getUseseedattrib()==0))||((getGroupRandom()==0)))) ) )
331  graph->evalOpParm(mySeedattrib, nodeidx, "seedattrib", time, graph->isDirect()?nullptr:depnode);
332  myPercent = 50;
333  if (true && ( (true&&!(((getGroupRandom()==0)))) ) )
334  graph->evalOpParm(myPercent, nodeidx, "percent", time, graph->isDirect()?nullptr:depnode);
335 
336  }
337 
338 
339  void loadFromOpSubclass(const LoadParms &loadparms) override
340  {
341  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
342  }
343 
344 
345  void copyFrom(const OP_NodeParms *src) override
346  {
347  *this = *((const SOP_GroupCreateParms *)src);
348  }
349 
350  template <typename T>
351  void
352  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
353  {
354  if (idx.size() < 1)
355  return;
356  UT_ASSERT(idx.size() == instance.size()+1);
357  if (idx.size() != instance.size()+1)
358  return;
359  switch (idx[0])
360  {
361  case 0:
362  coerceValue(value, myGroupName);
363  break;
364  case 1:
365  coerceValue(value, myGrouptype);
366  break;
367  case 2:
368  coerceValue(value, myMergeop);
369  break;
370  case 3:
371  coerceValue(value, myGroupBase);
372  break;
373  case 4:
374  coerceValue(value, myBasegroup);
375  break;
376  case 5:
377  coerceValue(value, myOrdered);
378  break;
379  case 6:
380  coerceValue(value, myGeotype);
381  break;
382  case 7:
383  coerceValue(value, myGroupBounding);
384  break;
385  case 8:
386  coerceValue(value, myBoundtype);
387  break;
388  case 9:
389  coerceValue(value, mySize);
390  break;
391  case 10:
392  coerceValue(value, myT);
393  break;
394  case 11:
395  coerceValue(value, myIncludenotwhollycontained);
396  break;
397  case 12:
398  coerceValue(value, myIso);
399  break;
400  case 13:
401  coerceValue(value, myInvertvolume);
402  break;
403  case 14:
404  coerceValue(value, myGroupNormal);
405  break;
406  case 15:
407  coerceValue(value, myCamerapath);
408  break;
409  case 16:
410  coerceValue(value, myNonplanar);
411  break;
412  case 17:
413  coerceValue(value, myNonplanartol);
414  break;
415  case 18:
416  coerceValue(value, myDir);
417  break;
418  case 19:
419  coerceValue(value, myAngle);
420  break;
421  case 20:
422  coerceValue(value, myOppositenormals);
423  break;
424  case 21:
425  coerceValue(value, myGroupEdges);
426  break;
427  case 22:
428  coerceValue(value, myDominedgeangle);
429  break;
430  case 23:
431  coerceValue(value, myMinedgeangle);
432  break;
433  case 24:
434  coerceValue(value, myDomaxedgeangle);
435  break;
436  case 25:
437  coerceValue(value, myMaxedgeangle);
438  break;
439  case 26:
440  coerceValue(value, myEdgeAngleBetweenEdges);
441  break;
442  case 27:
443  coerceValue(value, myDominedgelen);
444  break;
445  case 28:
446  coerceValue(value, myMinedgelen);
447  break;
448  case 29:
449  coerceValue(value, myDomaxedgelen);
450  break;
451  case 30:
452  coerceValue(value, myMaxedgelen);
453  break;
454  case 31:
455  coerceValue(value, myDodepth);
456  break;
457  case 32:
458  coerceValue(value, myEdgestep);
459  break;
460  case 33:
461  coerceValue(value, myEdgeptgrp);
462  break;
463  case 34:
464  coerceValue(value, myUnshared);
465  break;
466  case 35:
467  coerceValue(value, myBoundaryGroups);
468  break;
469  case 36:
470  coerceValue(value, myGroupRandom);
471  break;
472  case 37:
473  coerceValue(value, myGlobalseed);
474  break;
475  case 38:
476  coerceValue(value, myUseseedattrib);
477  break;
478  case 39:
479  coerceValue(value, mySeedattrib);
480  break;
481  case 40:
482  coerceValue(value, myPercent);
483  break;
484 
485  }
486  }
487 
488  bool isParmColorRamp(exint idx) const override
489  {
490  switch (idx)
491  {
492 
493  }
494  return false;
495  }
496 
497  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
498  { doGetParmValue(idx, instance, value); }
499  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
500  { doGetParmValue(idx, instance, value); }
501  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
502  { doGetParmValue(idx, instance, value); }
503  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
504  { doGetParmValue(idx, instance, value); }
505  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
506  { doGetParmValue(idx, instance, value); }
507  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
508  { doGetParmValue(idx, instance, value); }
509  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
510  { doGetParmValue(idx, instance, value); }
511  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
512  { doGetParmValue(idx, instance, value); }
513  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
514  { doGetParmValue(idx, instance, value); }
515  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
516  { doGetParmValue(idx, instance, value); }
517  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
518  { doGetParmValue(idx, instance, value); }
519 
520  template <typename T>
521  void
522  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
523  {
524  if (idx.size() < 1)
525  return;
526  UT_ASSERT(idx.size() == instance.size()+1);
527  if (idx.size() != instance.size()+1)
528  return;
529  switch (idx[0])
530  {
531  case 0:
532  coerceValue(myGroupName, ( ( value ) ));
533  break;
534  case 1:
535  coerceValue(myGrouptype, clampMinValue(0, clampMaxValue(3, value ) ));
536  break;
537  case 2:
538  coerceValue(myMergeop, clampMinValue(0, clampMaxValue(3, value ) ));
539  break;
540  case 3:
541  coerceValue(myGroupBase, ( ( value ) ));
542  break;
543  case 4:
544  coerceValue(myBasegroup, ( ( value ) ));
545  break;
546  case 5:
547  coerceValue(myOrdered, ( ( value ) ));
548  break;
549  case 6:
550  coerceValue(myGeotype, ( ( value ) ));
551  break;
552  case 7:
553  coerceValue(myGroupBounding, ( ( value ) ));
554  break;
555  case 8:
556  coerceValue(myBoundtype, clampMinValue(0, clampMaxValue(4, value ) ));
557  break;
558  case 9:
559  coerceValue(mySize, ( ( value ) ));
560  break;
561  case 10:
562  coerceValue(myT, ( ( value ) ));
563  break;
564  case 11:
565  coerceValue(myIncludenotwhollycontained, ( ( value ) ));
566  break;
567  case 12:
568  coerceValue(myIso, ( ( value ) ));
569  break;
570  case 13:
571  coerceValue(myInvertvolume, ( ( value ) ));
572  break;
573  case 14:
574  coerceValue(myGroupNormal, ( ( value ) ));
575  break;
576  case 15:
577  coerceValue(myCamerapath, ( ( value ) ));
578  break;
579  case 16:
580  coerceValue(myNonplanar, ( ( value ) ));
581  break;
582  case 17:
583  coerceValue(myNonplanartol, clampMinValue(0, ( value ) ));
584  break;
585  case 18:
586  coerceValue(myDir, ( ( value ) ));
587  break;
588  case 19:
589  coerceValue(myAngle, clampMinValue(0, clampMaxValue(180, value ) ));
590  break;
591  case 20:
592  coerceValue(myOppositenormals, ( ( value ) ));
593  break;
594  case 21:
595  coerceValue(myGroupEdges, ( ( value ) ));
596  break;
597  case 22:
598  coerceValue(myDominedgeangle, ( ( value ) ));
599  break;
600  case 23:
601  coerceValue(myMinedgeangle, ( ( value ) ));
602  break;
603  case 24:
604  coerceValue(myDomaxedgeangle, ( ( value ) ));
605  break;
606  case 25:
607  coerceValue(myMaxedgeangle, ( ( value ) ));
608  break;
609  case 26:
610  coerceValue(myEdgeAngleBetweenEdges, ( ( value ) ));
611  break;
612  case 27:
613  coerceValue(myDominedgelen, ( ( value ) ));
614  break;
615  case 28:
616  coerceValue(myMinedgelen, clampMinValue(0, ( value ) ));
617  break;
618  case 29:
619  coerceValue(myDomaxedgelen, ( ( value ) ));
620  break;
621  case 30:
622  coerceValue(myMaxedgelen, clampMinValue(0, ( value ) ));
623  break;
624  case 31:
625  coerceValue(myDodepth, ( ( value ) ));
626  break;
627  case 32:
628  coerceValue(myEdgestep, clampMinValue(0, ( value ) ));
629  break;
630  case 33:
631  coerceValue(myEdgeptgrp, ( ( value ) ));
632  break;
633  case 34:
634  coerceValue(myUnshared, ( ( value ) ));
635  break;
636  case 35:
637  coerceValue(myBoundaryGroups, ( ( value ) ));
638  break;
639  case 36:
640  coerceValue(myGroupRandom, ( ( value ) ));
641  break;
642  case 37:
643  coerceValue(myGlobalseed, ( ( value ) ));
644  break;
645  case 38:
646  coerceValue(myUseseedattrib, ( ( value ) ));
647  break;
648  case 39:
649  coerceValue(mySeedattrib, ( ( value ) ));
650  break;
651  case 40:
652  coerceValue(myPercent, clampMinValue(0, clampMaxValue(100, value ) ));
653  break;
654 
655  }
656  }
657 
658  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
659  { doSetParmValue(idx, instance, value); }
660  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
661  { doSetParmValue(idx, instance, value); }
662  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
663  { doSetParmValue(idx, instance, value); }
664  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
665  { doSetParmValue(idx, instance, value); }
666  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
667  { doSetParmValue(idx, instance, value); }
668  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
669  { doSetParmValue(idx, instance, value); }
670  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
671  { doSetParmValue(idx, instance, value); }
672  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
673  { doSetParmValue(idx, instance, value); }
674  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
675  { doSetParmValue(idx, instance, value); }
676  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
677  { doSetParmValue(idx, instance, value); }
678  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
679  { doSetParmValue(idx, instance, value); }
680 
681  exint getNestNumParms(TempIndex idx) const override
682  {
683  if (idx.size() == 0)
684  return 41;
685  switch (idx[0])
686  {
687 
688  }
689  // Invalid
690  return 0;
691  }
692 
693  const char *getNestParmName(TempIndex fieldnum) const override
694  {
695  if (fieldnum.size() < 1)
696  return 0;
697  switch (fieldnum[0])
698  {
699  case 0:
700  return "groupname";
701  case 1:
702  return "grouptype";
703  case 2:
704  return "mergeop";
705  case 3:
706  return "groupbase";
707  case 4:
708  return "basegroup";
709  case 5:
710  return "ordered";
711  case 6:
712  return "geotype";
713  case 7:
714  return "groupbounding";
715  case 8:
716  return "boundtype";
717  case 9:
718  return "size";
719  case 10:
720  return "t";
721  case 11:
722  return "includenotwhollycontained";
723  case 12:
724  return "iso";
725  case 13:
726  return "invertvolume";
727  case 14:
728  return "groupnormal";
729  case 15:
730  return "camerapath";
731  case 16:
732  return "nonplanar";
733  case 17:
734  return "nonplanartol";
735  case 18:
736  return "dir";
737  case 19:
738  return "angle";
739  case 20:
740  return "oppositenormals";
741  case 21:
742  return "groupedges";
743  case 22:
744  return "dominedgeangle";
745  case 23:
746  return "minedgeangle";
747  case 24:
748  return "domaxedgeangle";
749  case 25:
750  return "maxedgeangle";
751  case 26:
752  return "edgeanglebetweenedges";
753  case 27:
754  return "dominedgelen";
755  case 28:
756  return "minedgelen";
757  case 29:
758  return "domaxedgelen";
759  case 30:
760  return "maxedgelen";
761  case 31:
762  return "dodepth";
763  case 32:
764  return "edgestep";
765  case 33:
766  return "edgeptgrp";
767  case 34:
768  return "unshared";
769  case 35:
770  return "boundarygroups";
771  case 36:
772  return "grouprandom";
773  case 37:
774  return "globalseed";
775  case 38:
776  return "useseedattrib";
777  case 39:
778  return "seedattrib";
779  case 40:
780  return "percent";
781 
782  }
783  return 0;
784  }
785 
786  ParmType getNestParmType(TempIndex fieldnum) const override
787  {
788  if (fieldnum.size() < 1)
789  return PARM_UNSUPPORTED;
790  switch (fieldnum[0])
791  {
792  case 0:
793  return PARM_STRING;
794  case 1:
795  return PARM_INTEGER;
796  case 2:
797  return PARM_INTEGER;
798  case 3:
799  return PARM_INTEGER;
800  case 4:
801  return PARM_STRING;
802  case 5:
803  return PARM_INTEGER;
804  case 6:
805  return PARM_INTEGER;
806  case 7:
807  return PARM_INTEGER;
808  case 8:
809  return PARM_INTEGER;
810  case 9:
811  return PARM_VECTOR3;
812  case 10:
813  return PARM_VECTOR3;
814  case 11:
815  return PARM_INTEGER;
816  case 12:
817  return PARM_FLOAT;
818  case 13:
819  return PARM_INTEGER;
820  case 14:
821  return PARM_INTEGER;
822  case 15:
823  return PARM_STRING;
824  case 16:
825  return PARM_INTEGER;
826  case 17:
827  return PARM_FLOAT;
828  case 18:
829  return PARM_VECTOR3;
830  case 19:
831  return PARM_FLOAT;
832  case 20:
833  return PARM_INTEGER;
834  case 21:
835  return PARM_INTEGER;
836  case 22:
837  return PARM_INTEGER;
838  case 23:
839  return PARM_FLOAT;
840  case 24:
841  return PARM_INTEGER;
842  case 25:
843  return PARM_FLOAT;
844  case 26:
845  return PARM_INTEGER;
846  case 27:
847  return PARM_INTEGER;
848  case 28:
849  return PARM_FLOAT;
850  case 29:
851  return PARM_INTEGER;
852  case 30:
853  return PARM_FLOAT;
854  case 31:
855  return PARM_INTEGER;
856  case 32:
857  return PARM_INTEGER;
858  case 33:
859  return PARM_STRING;
860  case 34:
861  return PARM_INTEGER;
862  case 35:
863  return PARM_INTEGER;
864  case 36:
865  return PARM_INTEGER;
866  case 37:
867  return PARM_FLOAT;
868  case 38:
869  return PARM_INTEGER;
870  case 39:
871  return PARM_STRING;
872  case 40:
873  return PARM_FLOAT;
874 
875  }
876  return PARM_UNSUPPORTED;
877  }
878 
879  // Boiler plate to load individual types.
880  static void loadData(UT_IStream &is, int64 &v)
881  { is.bread(&v, 1); }
882  static void loadData(UT_IStream &is, bool &v)
883  { int64 iv; is.bread(&iv, 1); v = iv; }
884  static void loadData(UT_IStream &is, fpreal64 &v)
885  { is.bread<fpreal64>(&v, 1); }
886  static void loadData(UT_IStream &is, UT_Vector2D &v)
887  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
888  static void loadData(UT_IStream &is, UT_Vector3D &v)
889  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
890  is.bread<fpreal64>(&v.z(), 1); }
891  static void loadData(UT_IStream &is, UT_Vector4D &v)
892  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
893  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
894  static void loadData(UT_IStream &is, UT_Matrix2D &v)
895  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
896  static void loadData(UT_IStream &is, UT_Matrix3D &v)
897  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
898  static void loadData(UT_IStream &is, UT_Matrix4D &v)
899  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
900  static void loadData(UT_IStream &is, UT_Vector2I &v)
901  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
902  static void loadData(UT_IStream &is, UT_Vector3I &v)
903  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
904  is.bread<int64>(&v.z(), 1); }
905  static void loadData(UT_IStream &is, UT_Vector4I &v)
906  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
907  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
909  { is.bread(v); }
911  { UT_StringHolder rampdata;
912  loadData(is, rampdata);
913  if (rampdata.isstring())
914  {
915  v.reset(new UT_Ramp());
916  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
917  v->load(istr);
918  }
919  else v.reset();
920  }
923  loadData(is, data);
924  if (data.isstring())
925  {
926  // Find the data type.
927  const char *colon = UT_StringWrap(data).findChar(':');
928  if (colon)
929  {
930  int typelen = colon - data.buffer();
932  type.strncpy(data.buffer(), typelen);
933  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
934 
935  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
936  }
937  }
938  else v.reset();
939  }
940 
941  static void saveData(std::ostream &os, int64 v)
942  { UTwrite(os, &v); }
943  static void saveData(std::ostream &os, bool v)
944  { int64 iv = v; UTwrite(os, &iv); }
945  static void saveData(std::ostream &os, fpreal64 v)
946  { UTwrite<fpreal64>(os, &v); }
947  static void saveData(std::ostream &os, UT_Vector2D v)
948  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
949  static void saveData(std::ostream &os, UT_Vector3D v)
950  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
951  UTwrite<fpreal64>(os, &v.z()); }
952  static void saveData(std::ostream &os, UT_Vector4D v)
953  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
954  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
955  static void saveData(std::ostream &os, UT_Matrix2D v)
957  static void saveData(std::ostream &os, UT_Matrix3D v)
959  static void saveData(std::ostream &os, UT_Matrix4D v)
961  static void saveData(std::ostream &os, UT_StringHolder s)
962  { UT_StringWrap(s).saveBinary(os); }
963  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
965  UT_OStringStream ostr;
966  if (s) s->save(ostr);
967  result = ostr.str();
968  saveData(os, result);
969  }
970  static void saveData(std::ostream &os, PRM_DataItemHandle s)
972  UT_OStringStream ostr;
973  if (s)
974  {
975  ostr << s->getDataTypeToken();
976  ostr << ":";
977  s->saveBinary(ostr);
978  }
979  result = ostr.str();
980  saveData(os, result);
981  }
982 
983 
984  void save(std::ostream &os) const
985  {
986  int32 v = version();
987  UTwrite(os, &v);
988  saveData(os, myGroupName);
989  saveData(os, myGrouptype);
990  saveData(os, myMergeop);
991  saveData(os, myGroupBase);
992  saveData(os, myBasegroup);
993  saveData(os, myOrdered);
994  saveData(os, myGeotype);
995  saveData(os, myGroupBounding);
996  saveData(os, myBoundtype);
997  saveData(os, mySize);
998  saveData(os, myT);
999  saveData(os, myIncludenotwhollycontained);
1000  saveData(os, myIso);
1001  saveData(os, myInvertvolume);
1002  saveData(os, myGroupNormal);
1003  saveData(os, myCamerapath);
1004  saveData(os, myNonplanar);
1005  saveData(os, myNonplanartol);
1006  saveData(os, myDir);
1007  saveData(os, myAngle);
1008  saveData(os, myOppositenormals);
1009  saveData(os, myGroupEdges);
1010  saveData(os, myDominedgeangle);
1011  saveData(os, myMinedgeangle);
1012  saveData(os, myDomaxedgeangle);
1013  saveData(os, myMaxedgeangle);
1014  saveData(os, myEdgeAngleBetweenEdges);
1015  saveData(os, myDominedgelen);
1016  saveData(os, myMinedgelen);
1017  saveData(os, myDomaxedgelen);
1018  saveData(os, myMaxedgelen);
1019  saveData(os, myDodepth);
1020  saveData(os, myEdgestep);
1021  saveData(os, myEdgeptgrp);
1022  saveData(os, myUnshared);
1023  saveData(os, myBoundaryGroups);
1024  saveData(os, myGroupRandom);
1025  saveData(os, myGlobalseed);
1026  saveData(os, myUseseedattrib);
1027  saveData(os, mySeedattrib);
1028  saveData(os, myPercent);
1029 
1030  }
1031 
1032  bool load(UT_IStream &is)
1033  {
1034  int32 v;
1035  is.bread(&v, 1);
1036  if (version() != v)
1037  {
1038  // Fail incompatible versions
1039  return false;
1040  }
1041  loadData(is, myGroupName);
1042  loadData(is, myGrouptype);
1043  loadData(is, myMergeop);
1044  loadData(is, myGroupBase);
1045  loadData(is, myBasegroup);
1046  loadData(is, myOrdered);
1047  loadData(is, myGeotype);
1048  loadData(is, myGroupBounding);
1049  loadData(is, myBoundtype);
1050  loadData(is, mySize);
1051  loadData(is, myT);
1052  loadData(is, myIncludenotwhollycontained);
1053  loadData(is, myIso);
1054  loadData(is, myInvertvolume);
1055  loadData(is, myGroupNormal);
1056  loadData(is, myCamerapath);
1057  loadData(is, myNonplanar);
1058  loadData(is, myNonplanartol);
1059  loadData(is, myDir);
1060  loadData(is, myAngle);
1061  loadData(is, myOppositenormals);
1062  loadData(is, myGroupEdges);
1063  loadData(is, myDominedgeangle);
1064  loadData(is, myMinedgeangle);
1065  loadData(is, myDomaxedgeangle);
1066  loadData(is, myMaxedgeangle);
1067  loadData(is, myEdgeAngleBetweenEdges);
1068  loadData(is, myDominedgelen);
1069  loadData(is, myMinedgelen);
1070  loadData(is, myDomaxedgelen);
1071  loadData(is, myMaxedgelen);
1072  loadData(is, myDodepth);
1073  loadData(is, myEdgestep);
1074  loadData(is, myEdgeptgrp);
1075  loadData(is, myUnshared);
1076  loadData(is, myBoundaryGroups);
1077  loadData(is, myGroupRandom);
1078  loadData(is, myGlobalseed);
1079  loadData(is, myUseseedattrib);
1080  loadData(is, mySeedattrib);
1081  loadData(is, myPercent);
1082 
1083  return true;
1084  }
1085 
1086  const UT_StringHolder & getGroupName() const { return myGroupName; }
1087  void setGroupName(const UT_StringHolder & val) { myGroupName = val; }
1089  {
1090  SOP_Node *thissop = cookparms.getNode();
1091  if (!thissop) return getGroupName();
1093  OP_Utils::evalOpParm(result, thissop, "groupname", cookparms.getCookTime(), 0);
1094  return result;
1095  }
1096  Grouptype getGrouptype() const { return Grouptype(myGrouptype); }
1097  void setGrouptype(Grouptype val) { myGrouptype = int64(val); }
1099  {
1100  SOP_Node *thissop = cookparms.getNode();
1101  if (!thissop) return getGrouptype();
1102  int64 result;
1103  OP_Utils::evalOpParm(result, thissop, "grouptype", cookparms.getCookTime(), 0);
1104  return Grouptype(result);
1105  }
1106  Mergeop getMergeop() const { return Mergeop(myMergeop); }
1107  void setMergeop(Mergeop val) { myMergeop = int64(val); }
1109  {
1110  SOP_Node *thissop = cookparms.getNode();
1111  if (!thissop) return getMergeop();
1112  int64 result;
1113  OP_Utils::evalOpParm(result, thissop, "mergeop", cookparms.getCookTime(), 0);
1114  return Mergeop(result);
1115  }
1116  bool getGroupBase() const { return myGroupBase; }
1117  void setGroupBase(bool val) { myGroupBase = val; }
1118  bool opGroupBase(const SOP_NodeVerb::CookParms &cookparms) const
1119  {
1120  SOP_Node *thissop = cookparms.getNode();
1121  if (!thissop) return getGroupBase();
1122  bool result;
1123  OP_Utils::evalOpParm(result, thissop, "groupbase", cookparms.getCookTime(), 0);
1124  return result;
1125  }
1126  const UT_StringHolder & getBasegroup() const { return myBasegroup; }
1127  void setBasegroup(const UT_StringHolder & val) { myBasegroup = val; }
1129  {
1130  SOP_Node *thissop = cookparms.getNode();
1131  if (!thissop) return getBasegroup();
1133  OP_Utils::evalOpParm(result, thissop, "basegroup", cookparms.getCookTime(), 0);
1134  return result;
1135  }
1136  bool getOrdered() const { return myOrdered; }
1137  void setOrdered(bool val) { myOrdered = val; }
1138  bool opOrdered(const SOP_NodeVerb::CookParms &cookparms) const
1139  {
1140  SOP_Node *thissop = cookparms.getNode();
1141  if (!thissop) return getOrdered();
1142  bool result;
1143  OP_Utils::evalOpParm(result, thissop, "ordered", cookparms.getCookTime(), 0);
1144  return result;
1145  }
1146  int64 getGeotype() const { return myGeotype; }
1147  void setGeotype(int64 val) { myGeotype = val; }
1148  int64 opGeotype(const SOP_NodeVerb::CookParms &cookparms) const
1149  {
1150  SOP_Node *thissop = cookparms.getNode();
1151  if (!thissop) return getGeotype();
1152  int64 result;
1153  OP_Utils::evalOpParm(result, thissop, "geotype", cookparms.getCookTime(), 0);
1154  return result;
1155  }
1156  bool getGroupBounding() const { return myGroupBounding; }
1157  void setGroupBounding(bool val) { myGroupBounding = val; }
1158  bool opGroupBounding(const SOP_NodeVerb::CookParms &cookparms) const
1159  {
1160  SOP_Node *thissop = cookparms.getNode();
1161  if (!thissop) return getGroupBounding();
1162  bool result;
1163  OP_Utils::evalOpParm(result, thissop, "groupbounding", cookparms.getCookTime(), 0);
1164  return result;
1165  }
1166  Boundtype getBoundtype() const { return Boundtype(myBoundtype); }
1167  void setBoundtype(Boundtype val) { myBoundtype = int64(val); }
1169  {
1170  SOP_Node *thissop = cookparms.getNode();
1171  if (!thissop) return getBoundtype();
1172  int64 result;
1173  OP_Utils::evalOpParm(result, thissop, "boundtype", cookparms.getCookTime(), 0);
1174  return Boundtype(result);
1175  }
1176  UT_Vector3D getSize() const { return mySize; }
1177  void setSize(UT_Vector3D val) { mySize = val; }
1179  {
1180  SOP_Node *thissop = cookparms.getNode();
1181  if (!thissop) return getSize();
1183  OP_Utils::evalOpParm(result, thissop, "size", cookparms.getCookTime(), 0);
1184  return result;
1185  }
1186  UT_Vector3D getT() const { return myT; }
1187  void setT(UT_Vector3D val) { myT = val; }
1188  UT_Vector3D opT(const SOP_NodeVerb::CookParms &cookparms) const
1189  {
1190  SOP_Node *thissop = cookparms.getNode();
1191  if (!thissop) return getT();
1193  OP_Utils::evalOpParm(result, thissop, "t", cookparms.getCookTime(), 0);
1194  return result;
1195  }
1196  bool getIncludenotwhollycontained() const { return myIncludenotwhollycontained; }
1197  void setIncludenotwhollycontained(bool val) { myIncludenotwhollycontained = val; }
1199  {
1200  SOP_Node *thissop = cookparms.getNode();
1201  if (!thissop) return getIncludenotwhollycontained();
1202  bool result;
1203  OP_Utils::evalOpParm(result, thissop, "includenotwhollycontained", cookparms.getCookTime(), 0);
1204  return result;
1205  }
1206  fpreal64 getIso() const { return myIso; }
1207  void setIso(fpreal64 val) { myIso = val; }
1208  fpreal64 opIso(const SOP_NodeVerb::CookParms &cookparms) const
1209  {
1210  SOP_Node *thissop = cookparms.getNode();
1211  if (!thissop) return getIso();
1212  fpreal64 result;
1213  OP_Utils::evalOpParm(result, thissop, "iso", cookparms.getCookTime(), 0);
1214  return result;
1215  }
1216  bool getInvertvolume() const { return myInvertvolume; }
1217  void setInvertvolume(bool val) { myInvertvolume = val; }
1218  bool opInvertvolume(const SOP_NodeVerb::CookParms &cookparms) const
1219  {
1220  SOP_Node *thissop = cookparms.getNode();
1221  if (!thissop) return getInvertvolume();
1222  bool result;
1223  OP_Utils::evalOpParm(result, thissop, "invertvolume", cookparms.getCookTime(), 0);
1224  return result;
1225  }
1226  bool getGroupNormal() const { return myGroupNormal; }
1227  void setGroupNormal(bool val) { myGroupNormal = val; }
1228  bool opGroupNormal(const SOP_NodeVerb::CookParms &cookparms) const
1229  {
1230  SOP_Node *thissop = cookparms.getNode();
1231  if (!thissop) return getGroupNormal();
1232  bool result;
1233  OP_Utils::evalOpParm(result, thissop, "groupnormal", cookparms.getCookTime(), 0);
1234  return result;
1235  }
1236  const UT_StringHolder & getCamerapath() const { return myCamerapath; }
1237  void setCamerapath(const UT_StringHolder & val) { myCamerapath = val; }
1239  {
1240  SOP_Node *thissop = cookparms.getNode();
1241  if (!thissop) return getCamerapath();
1243  OP_Utils::evalOpParm(result, thissop, "camerapath", cookparms.getCookTime(), 0);
1244  return result;
1245  }
1246  bool getNonplanar() const { return myNonplanar; }
1247  void setNonplanar(bool val) { myNonplanar = val; }
1248  bool opNonplanar(const SOP_NodeVerb::CookParms &cookparms) const
1249  {
1250  SOP_Node *thissop = cookparms.getNode();
1251  if (!thissop) return getNonplanar();
1252  bool result;
1253  OP_Utils::evalOpParm(result, thissop, "nonplanar", cookparms.getCookTime(), 0);
1254  return result;
1255  }
1256  fpreal64 getNonplanartol() const { return myNonplanartol; }
1257  void setNonplanartol(fpreal64 val) { myNonplanartol = val; }
1259  {
1260  SOP_Node *thissop = cookparms.getNode();
1261  if (!thissop) return getNonplanartol();
1262  fpreal64 result;
1263  OP_Utils::evalOpParm(result, thissop, "nonplanartol", cookparms.getCookTime(), 0);
1264  return result;
1265  }
1266  UT_Vector3D getDir() const { return myDir; }
1267  void setDir(UT_Vector3D val) { myDir = val; }
1269  {
1270  SOP_Node *thissop = cookparms.getNode();
1271  if (!thissop) return getDir();
1273  OP_Utils::evalOpParm(result, thissop, "dir", cookparms.getCookTime(), 0);
1274  return result;
1275  }
1276  fpreal64 getAngle() const { return myAngle; }
1277  void setAngle(fpreal64 val) { myAngle = val; }
1278  fpreal64 opAngle(const SOP_NodeVerb::CookParms &cookparms) const
1279  {
1280  SOP_Node *thissop = cookparms.getNode();
1281  if (!thissop) return getAngle();
1282  fpreal64 result;
1283  OP_Utils::evalOpParm(result, thissop, "angle", cookparms.getCookTime(), 0);
1284  return result;
1285  }
1286  bool getOppositenormals() const { return myOppositenormals; }
1287  void setOppositenormals(bool val) { myOppositenormals = val; }
1288  bool opOppositenormals(const SOP_NodeVerb::CookParms &cookparms) const
1289  {
1290  SOP_Node *thissop = cookparms.getNode();
1291  if (!thissop) return getOppositenormals();
1292  bool result;
1293  OP_Utils::evalOpParm(result, thissop, "oppositenormals", cookparms.getCookTime(), 0);
1294  return result;
1295  }
1296  bool getGroupEdges() const { return myGroupEdges; }
1297  void setGroupEdges(bool val) { myGroupEdges = val; }
1298  bool opGroupEdges(const SOP_NodeVerb::CookParms &cookparms) const
1299  {
1300  SOP_Node *thissop = cookparms.getNode();
1301  if (!thissop) return getGroupEdges();
1302  bool result;
1303  OP_Utils::evalOpParm(result, thissop, "groupedges", cookparms.getCookTime(), 0);
1304  return result;
1305  }
1306  bool getDominedgeangle() const { return myDominedgeangle; }
1307  void setDominedgeangle(bool val) { myDominedgeangle = val; }
1308  bool opDominedgeangle(const SOP_NodeVerb::CookParms &cookparms) const
1309  {
1310  SOP_Node *thissop = cookparms.getNode();
1311  if (!thissop) return getDominedgeangle();
1312  bool result;
1313  OP_Utils::evalOpParm(result, thissop, "dominedgeangle", cookparms.getCookTime(), 0);
1314  return result;
1315  }
1316  fpreal64 getMinedgeangle() const { return myMinedgeangle; }
1317  void setMinedgeangle(fpreal64 val) { myMinedgeangle = val; }
1319  {
1320  SOP_Node *thissop = cookparms.getNode();
1321  if (!thissop) return getMinedgeangle();
1322  fpreal64 result;
1323  OP_Utils::evalOpParm(result, thissop, "minedgeangle", cookparms.getCookTime(), 0);
1324  return result;
1325  }
1326  bool getDomaxedgeangle() const { return myDomaxedgeangle; }
1327  void setDomaxedgeangle(bool val) { myDomaxedgeangle = val; }
1328  bool opDomaxedgeangle(const SOP_NodeVerb::CookParms &cookparms) const
1329  {
1330  SOP_Node *thissop = cookparms.getNode();
1331  if (!thissop) return getDomaxedgeangle();
1332  bool result;
1333  OP_Utils::evalOpParm(result, thissop, "domaxedgeangle", cookparms.getCookTime(), 0);
1334  return result;
1335  }
1336  fpreal64 getMaxedgeangle() const { return myMaxedgeangle; }
1337  void setMaxedgeangle(fpreal64 val) { myMaxedgeangle = val; }
1339  {
1340  SOP_Node *thissop = cookparms.getNode();
1341  if (!thissop) return getMaxedgeangle();
1342  fpreal64 result;
1343  OP_Utils::evalOpParm(result, thissop, "maxedgeangle", cookparms.getCookTime(), 0);
1344  return result;
1345  }
1346  bool getEdgeAngleBetweenEdges() const { return myEdgeAngleBetweenEdges; }
1347  void setEdgeAngleBetweenEdges(bool val) { myEdgeAngleBetweenEdges = val; }
1349  {
1350  SOP_Node *thissop = cookparms.getNode();
1351  if (!thissop) return getEdgeAngleBetweenEdges();
1352  bool result;
1353  OP_Utils::evalOpParm(result, thissop, "edgeanglebetweenedges", cookparms.getCookTime(), 0);
1354  return result;
1355  }
1356  bool getDominedgelen() const { return myDominedgelen; }
1357  void setDominedgelen(bool val) { myDominedgelen = val; }
1358  bool opDominedgelen(const SOP_NodeVerb::CookParms &cookparms) const
1359  {
1360  SOP_Node *thissop = cookparms.getNode();
1361  if (!thissop) return getDominedgelen();
1362  bool result;
1363  OP_Utils::evalOpParm(result, thissop, "dominedgelen", cookparms.getCookTime(), 0);
1364  return result;
1365  }
1366  fpreal64 getMinedgelen() const { return myMinedgelen; }
1367  void setMinedgelen(fpreal64 val) { myMinedgelen = val; }
1369  {
1370  SOP_Node *thissop = cookparms.getNode();
1371  if (!thissop) return getMinedgelen();
1372  fpreal64 result;
1373  OP_Utils::evalOpParm(result, thissop, "minedgelen", cookparms.getCookTime(), 0);
1374  return result;
1375  }
1376  bool getDomaxedgelen() const { return myDomaxedgelen; }
1377  void setDomaxedgelen(bool val) { myDomaxedgelen = val; }
1378  bool opDomaxedgelen(const SOP_NodeVerb::CookParms &cookparms) const
1379  {
1380  SOP_Node *thissop = cookparms.getNode();
1381  if (!thissop) return getDomaxedgelen();
1382  bool result;
1383  OP_Utils::evalOpParm(result, thissop, "domaxedgelen", cookparms.getCookTime(), 0);
1384  return result;
1385  }
1386  fpreal64 getMaxedgelen() const { return myMaxedgelen; }
1387  void setMaxedgelen(fpreal64 val) { myMaxedgelen = val; }
1389  {
1390  SOP_Node *thissop = cookparms.getNode();
1391  if (!thissop) return getMaxedgelen();
1392  fpreal64 result;
1393  OP_Utils::evalOpParm(result, thissop, "maxedgelen", cookparms.getCookTime(), 0);
1394  return result;
1395  }
1396  bool getDodepth() const { return myDodepth; }
1397  void setDodepth(bool val) { myDodepth = val; }
1398  bool opDodepth(const SOP_NodeVerb::CookParms &cookparms) const
1399  {
1400  SOP_Node *thissop = cookparms.getNode();
1401  if (!thissop) return getDodepth();
1402  bool result;
1403  OP_Utils::evalOpParm(result, thissop, "dodepth", cookparms.getCookTime(), 0);
1404  return result;
1405  }
1406  int64 getEdgestep() const { return myEdgestep; }
1407  void setEdgestep(int64 val) { myEdgestep = val; }
1408  int64 opEdgestep(const SOP_NodeVerb::CookParms &cookparms) const
1409  {
1410  SOP_Node *thissop = cookparms.getNode();
1411  if (!thissop) return getEdgestep();
1412  int64 result;
1413  OP_Utils::evalOpParm(result, thissop, "edgestep", cookparms.getCookTime(), 0);
1414  return result;
1415  }
1416  const UT_StringHolder & getEdgeptgrp() const { return myEdgeptgrp; }
1417  void setEdgeptgrp(const UT_StringHolder & val) { myEdgeptgrp = val; }
1419  {
1420  SOP_Node *thissop = cookparms.getNode();
1421  if (!thissop) return getEdgeptgrp();
1423  OP_Utils::evalOpParm(result, thissop, "edgeptgrp", cookparms.getCookTime(), 0);
1424  return result;
1425  }
1426  bool getUnshared() const { return myUnshared; }
1427  void setUnshared(bool val) { myUnshared = val; }
1428  bool opUnshared(const SOP_NodeVerb::CookParms &cookparms) const
1429  {
1430  SOP_Node *thissop = cookparms.getNode();
1431  if (!thissop) return getUnshared();
1432  bool result;
1433  OP_Utils::evalOpParm(result, thissop, "unshared", cookparms.getCookTime(), 0);
1434  return result;
1435  }
1436  bool getBoundaryGroups() const { return myBoundaryGroups; }
1437  void setBoundaryGroups(bool val) { myBoundaryGroups = val; }
1438  bool opBoundaryGroups(const SOP_NodeVerb::CookParms &cookparms) const
1439  {
1440  SOP_Node *thissop = cookparms.getNode();
1441  if (!thissop) return getBoundaryGroups();
1442  bool result;
1443  OP_Utils::evalOpParm(result, thissop, "boundarygroups", cookparms.getCookTime(), 0);
1444  return result;
1445  }
1446  bool getGroupRandom() const { return myGroupRandom; }
1447  void setGroupRandom(bool val) { myGroupRandom = val; }
1448  bool opGroupRandom(const SOP_NodeVerb::CookParms &cookparms) const
1449  {
1450  SOP_Node *thissop = cookparms.getNode();
1451  if (!thissop) return getGroupRandom();
1452  bool result;
1453  OP_Utils::evalOpParm(result, thissop, "grouprandom", cookparms.getCookTime(), 0);
1454  return result;
1455  }
1456  fpreal64 getGlobalseed() const { return myGlobalseed; }
1457  void setGlobalseed(fpreal64 val) { myGlobalseed = val; }
1459  {
1460  SOP_Node *thissop = cookparms.getNode();
1461  if (!thissop) return getGlobalseed();
1462  fpreal64 result;
1463  OP_Utils::evalOpParm(result, thissop, "globalseed", cookparms.getCookTime(), 0);
1464  return result;
1465  }
1466  bool getUseseedattrib() const { return myUseseedattrib; }
1467  void setUseseedattrib(bool val) { myUseseedattrib = val; }
1468  bool opUseseedattrib(const SOP_NodeVerb::CookParms &cookparms) const
1469  {
1470  SOP_Node *thissop = cookparms.getNode();
1471  if (!thissop) return getUseseedattrib();
1472  bool result;
1473  OP_Utils::evalOpParm(result, thissop, "useseedattrib", cookparms.getCookTime(), 0);
1474  return result;
1475  }
1476  const UT_StringHolder & getSeedattrib() const { return mySeedattrib; }
1477  void setSeedattrib(const UT_StringHolder & val) { mySeedattrib = val; }
1479  {
1480  SOP_Node *thissop = cookparms.getNode();
1481  if (!thissop) return getSeedattrib();
1483  OP_Utils::evalOpParm(result, thissop, "seedattrib", cookparms.getCookTime(), 0);
1484  return result;
1485  }
1486  fpreal64 getPercent() const { return myPercent; }
1487  void setPercent(fpreal64 val) { myPercent = val; }
1489  {
1490  SOP_Node *thissop = cookparms.getNode();
1491  if (!thissop) return getPercent();
1492  fpreal64 result;
1493  OP_Utils::evalOpParm(result, thissop, "percent", cookparms.getCookTime(), 0);
1494  return result;
1495  }
1496 
1497 private:
1498  UT_StringHolder myGroupName;
1499  int64 myGrouptype;
1500  int64 myMergeop;
1501  bool myGroupBase;
1502  UT_StringHolder myBasegroup;
1503  bool myOrdered;
1504  int64 myGeotype;
1505  bool myGroupBounding;
1506  int64 myBoundtype;
1507  UT_Vector3D mySize;
1508  UT_Vector3D myT;
1509  bool myIncludenotwhollycontained;
1510  fpreal64 myIso;
1511  bool myInvertvolume;
1512  bool myGroupNormal;
1513  UT_StringHolder myCamerapath;
1514  bool myNonplanar;
1515  fpreal64 myNonplanartol;
1516  UT_Vector3D myDir;
1517  fpreal64 myAngle;
1518  bool myOppositenormals;
1519  bool myGroupEdges;
1520  bool myDominedgeangle;
1521  fpreal64 myMinedgeangle;
1522  bool myDomaxedgeangle;
1523  fpreal64 myMaxedgeangle;
1524  bool myEdgeAngleBetweenEdges;
1525  bool myDominedgelen;
1526  fpreal64 myMinedgelen;
1527  bool myDomaxedgelen;
1528  fpreal64 myMaxedgelen;
1529  bool myDodepth;
1530  int64 myEdgestep;
1531  UT_StringHolder myEdgeptgrp;
1532  bool myUnshared;
1533  bool myBoundaryGroups;
1534  bool myGroupRandom;
1535  fpreal64 myGlobalseed;
1536  bool myUseseedattrib;
1537  UT_StringHolder mySeedattrib;
1538  fpreal64 myPercent;
1539 
1540 };
void setIncludenotwhollycontained(bool val)
bool getEdgeAngleBetweenEdges() const
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
type
Definition: core.h:556
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)
int int32
Definition: SYS_Types.h:39
const UT_StringHolder & getCamerapath() const
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
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 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)
GLboolean * data
Definition: glcorearb.h:131
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:493
const GLdouble * v
Definition: glcorearb.h:837
fpreal getTime() const
Definition: OP_Context.h:63
UT_Vector3D opDir(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, bool v)
bool opInvertvolume(const SOP_NodeVerb::CookParms &cookparms) const
GLsizei const GLfloat * value
Definition: glcorearb.h:824
bool opDomaxedgelen(const SOP_NodeVerb::CookParms &cookparms) const
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
UT_StringHolder opEdgeptgrp(const SOP_NodeVerb::CookParms &cookparms) const
const OP_Context & context() const
Definition: OP_NodeParms.h:97
static void loadData(UT_IStream &is, UT_Vector3D &v)
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
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
GLdouble s
Definition: glad.h:3009
Boundtype getBoundtype() const
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
An output stream object that owns its own string buffer storage.
UT_Vector3D getDir() const
bool opDominedgeangle(const SOP_NodeVerb::CookParms &cookparms) const
bool opDodepth(const SOP_NodeVerb::CookParms &cookparms) const
**But if you need a result
Definition: thread.h:622
ParmType getNestParmType(TempIndex fieldnum) const override
static void loadData(UT_IStream &is, UT_Vector2D &v)
const char * getNestParmName(TempIndex fieldnum) const override
fpreal64 getNonplanartol() const
exint nodeIdx() const
Definition: OP_NodeParms.h:95
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
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
UT_Vector3D getSize() const
UT_Vector3D opT(const SOP_NodeVerb::CookParms &cookparms) const
double fpreal64
Definition: SYS_Types.h:201
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: APEX_Include.h:55
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
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)
Definition: Dimensions.h:137
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)
exint length() const
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
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
static void loadData(UT_IStream &is, int64 &v)
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
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
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
static void loadData(UT_IStream &is, UT_Vector4I &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
bool opGroupBounding(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
bool opUseseedattrib(const SOP_NodeVerb::CookParms &cookparms) const
int64 opEdgestep(const SOP_NodeVerb::CookParms &cookparms) const
long long int64
Definition: SYS_Types.h:116
bool isParmColorRamp(exint idx) const override
fpreal64 getGlobalseed() const
bool opOrdered(const SOP_NodeVerb::CookParms &cookparms) const
void setPercent(fpreal64 val)
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)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
static void loadData(UT_IStream &is, UT_Matrix4D &v)
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
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.
Definition: UT_String.h:303
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
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)
UT_Vector3D getT() const
void save(std::ostream &os) const
fpreal64 fpreal
Definition: SYS_Types.h:278
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
void setSeedattrib(const UT_StringHolder &val)
LeafData & operator=(const LeafData &)=delete
Utility class for containing a color ramp.
Definition: UT_Ramp.h:96
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
Definition: UT_Vector4.h:497
GLuint GLfloat * val
Definition: glcorearb.h:1608
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:294
#define SOP_API
Definition: SOP_API.h:10
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
Definition: SOP_NodeVerb.h:372
void setMergeop(Mergeop val)
const char * findChar(int c) const
Definition: UT_String.h:1401
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
void setT(UT_Vector3D val)
GLboolean r
Definition: glcorearb.h:1222
void setNonplanartol(fpreal64 val)
static void saveData(std::ostream &os, UT_Vector2D v)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
fpreal64 opAngle(const SOP_NodeVerb::CookParms &cookparms) const
Grouptype getGrouptype() const
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
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
fpreal64 getMaxedgelen() const
static void saveData(std::ostream &os, UT_Matrix3D v)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
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)
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
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
fpreal64 getMinedgelen() const