HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_Primitive.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_NodeVerb.h>
7 #include <SOP/SOP_GraphProxy.h>
8 
9 #include <OP/OP_Utils.h>
10 #include <PRM/PRM_Parm.h>
11 #include <UT/UT_IStream.h>
12 #include <UT/UT_NTStreamUtil.h>
13 #include <UT/UT_Ramp.h>
14 #include <UT/UT_SharedPtr.h>
15 #include <UT/UT_StringHolder.h>
16 #include <UT/UT_StringStream.h>
17 #include <UT/UT_VectorTypes.h>
18 #include <SYS/SYS_Types.h>
19 
20 using namespace UT::Literal;
21 
22 class DEP_MicroNode;
23 namespace SOP_PrimitiveEnums
24 {
25  enum class DoRot
26  {
27  OFF = 0,
28  ON,
29  MATCH
30  };
31  enum class Xord
32  {
33  SRT = 0,
34  STR,
35  RST,
36  RTS,
37  TSR,
38  TRS
39  };
40  enum class Rord
41  {
42  XYZ = 0,
43  XZY,
44  YXZ,
45  YZX,
46  ZXY,
47  ZYX
48  };
49  enum class Doclr
50  {
51  OFF = 0,
52  ON,
53  REMOVE
54  };
55  enum class Doalpha
56  {
57  OFF = 0,
58  ON,
59  REMOVE
60  };
61  enum class Docrease
62  {
63  OFF = 0,
64  ON,
65  REMOVE
66  };
67  enum class Dotexture
68  {
69  OFF = 0,
70  ON,
71  REMOVE
72  };
73  enum class Closeu
74  {
75  SAMECLOSURE = 0,
76  OPEN,
77  CLOSESHARP,
78  CLOSEROUND,
79  UNROLL,
80  UNROLLSHARED
81  };
82  enum class Closev
83  {
84  SAMECLOSURE = 0,
85  OPEN,
86  CLOSESHARP,
87  CLOSEROUND,
88  UNROLL,
89  UNROLLSHARED
90  };
91  enum class Clampu
92  {
93  SAMECLAMP = 0,
94  CLAMP,
95  UNCLAMP
96  };
97  enum class Clampv
98  {
99  SAMECLAMP = 0,
100  CLAMP,
101  UNCLAMP
102  };
103  enum class Vtxsort
104  {
105  SAMEVERTEX = 0,
106  REVERSE,
107  REVERSEU,
108  REVERSEV,
109  SWAPUV,
110  SHIFT
111  };
112  enum class Prtype
113  {
114  SPHERE = 0,
115  CIRCLE,
116  LINE,
117  TUBE,
118  CAPPED,
119  ROUNDED
120  };
121  enum class Volvis
122  {
123  SMOKE = 0,
124  RAINBOW,
125  ISO,
126  INVISIBLE,
128  };
129  enum class Volborder
130  {
131  CONSTANT = 0,
132  REPEAT,
133  STREAK,
134  SDF
135  };
136 }
137 
138 
140 {
141 public:
142  static int version() { return 1; }
143 
145  {
146  myGroup = ""_sh;
147  myDoXform = false;
148  myDoRot = 0;
149  myXord = 0;
150  myRord = 0;
151  myT = UT_Vector3D(0,0,0);
152  myR = UT_Vector3D(0,0,0);
153  myS = UT_Vector3D(1,1,1);
154  myShear = UT_Vector3D(0,0,0);
155  myP = UT_Vector3D(0,0,0);
156  myPr = UT_Vector3D(0,0,0);
157  myLookatpath = ""_sh;
158  myUpvector = UT_Vector3D(0,0,0);
159  myXformattribs = "N"_sh;
160  myDoclr = 0;
161  myDiff = UT_Vector3D(0,0,0);
162  myDoalpha = 0;
163  myAlpha = 0;
164  myDocrease = 0;
165  myCrease = 0;
166  myDotexture = 0;
167  myTexture = ""_sh;
168  myCloseu = 0;
169  myClosev = 0;
170  myClampu = 0;
171  myClampv = 0;
172  myVtxsort = 0;
173  myVtxuoff = 0;
174  myVtxvoff = 0;
175  myDoweight = false;
176  myMetaweight = 0;
177  myDoprender = false;
178  myPrtype = 0;
179  myPrsize = 0.05;
180  myPrblur = 0;
181  myDovolvis = false;
182  myVolvis = 0;
183  myVolvisiso = 0;
184  myVolvisdensity = 1;
185  myDotaper = false;
186  myTaper = UT_Vector2D(1,1);
187  myDovolume = false;
188  myVolborder = 0;
189  myVolborderval = 0;
190  myDovoltol = false;
191  myVoltol = 0;
192  myDovdbclass = false;
193  myVdbclass = 0;
194  myDovdbcreator = false;
195  myVdbcreator = ""_sh;
196  myDovdbtransform = false;
197  myVdbtransform = false;
198  myDovdbvectype = false;
199  myVdbvectype = 0;
200  myDovdbhalf = false;
201  myVdbhalf = false;
202  myTemplategrp = ""_sh;
203  myPshapeu = false;
204  myPshapev = false;
205 
206  }
207 
208  explicit SOP_PrimitiveParms(const SOP_PrimitiveParms &) = default;
209 
210  ~SOP_PrimitiveParms() override {}
211 
212  bool operator==(const SOP_PrimitiveParms &src) const
213  {
214  if (myGroup != src.myGroup) return false;
215  if (myDoXform != src.myDoXform) return false;
216  if (myDoRot != src.myDoRot) return false;
217  if (myXord != src.myXord) return false;
218  if (myRord != src.myRord) return false;
219  if (myT != src.myT) return false;
220  if (myR != src.myR) return false;
221  if (myS != src.myS) return false;
222  if (myShear != src.myShear) return false;
223  if (myP != src.myP) return false;
224  if (myPr != src.myPr) return false;
225  if (myLookatpath != src.myLookatpath) return false;
226  if (myUpvector != src.myUpvector) return false;
227  if (myXformattribs != src.myXformattribs) return false;
228  if (myDoclr != src.myDoclr) return false;
229  if (myDiff != src.myDiff) return false;
230  if (myDoalpha != src.myDoalpha) return false;
231  if (myAlpha != src.myAlpha) return false;
232  if (myDocrease != src.myDocrease) return false;
233  if (myCrease != src.myCrease) return false;
234  if (myDotexture != src.myDotexture) return false;
235  if (myTexture != src.myTexture) return false;
236  if (myCloseu != src.myCloseu) return false;
237  if (myClosev != src.myClosev) return false;
238  if (myClampu != src.myClampu) return false;
239  if (myClampv != src.myClampv) return false;
240  if (myVtxsort != src.myVtxsort) return false;
241  if (myVtxuoff != src.myVtxuoff) return false;
242  if (myVtxvoff != src.myVtxvoff) return false;
243  if (myDoweight != src.myDoweight) return false;
244  if (myMetaweight != src.myMetaweight) return false;
245  if (myDoprender != src.myDoprender) return false;
246  if (myPrtype != src.myPrtype) return false;
247  if (myPrsize != src.myPrsize) return false;
248  if (myPrblur != src.myPrblur) return false;
249  if (myDovolvis != src.myDovolvis) return false;
250  if (myVolvis != src.myVolvis) return false;
251  if (myVolvisiso != src.myVolvisiso) return false;
252  if (myVolvisdensity != src.myVolvisdensity) return false;
253  if (myDotaper != src.myDotaper) return false;
254  if (myTaper != src.myTaper) return false;
255  if (myDovolume != src.myDovolume) return false;
256  if (myVolborder != src.myVolborder) return false;
257  if (myVolborderval != src.myVolborderval) return false;
258  if (myDovoltol != src.myDovoltol) return false;
259  if (myVoltol != src.myVoltol) return false;
260  if (myDovdbclass != src.myDovdbclass) return false;
261  if (myVdbclass != src.myVdbclass) return false;
262  if (myDovdbcreator != src.myDovdbcreator) return false;
263  if (myVdbcreator != src.myVdbcreator) return false;
264  if (myDovdbtransform != src.myDovdbtransform) return false;
265  if (myVdbtransform != src.myVdbtransform) return false;
266  if (myDovdbvectype != src.myDovdbvectype) return false;
267  if (myVdbvectype != src.myVdbvectype) return false;
268  if (myDovdbhalf != src.myDovdbhalf) return false;
269  if (myVdbhalf != src.myVdbhalf) return false;
270  if (myTemplategrp != src.myTemplategrp) return false;
271  if (myPshapeu != src.myPshapeu) return false;
272  if (myPshapev != src.myPshapev) return false;
273 
274  return true;
275  }
276  bool operator!=(const SOP_PrimitiveParms &src) const
277  {
278  return !operator==(src);
279  }
295 
296 
297 
298  void buildFromOp(const SOP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
299  {
300  myGroup = ""_sh;
301  if (true)
302  graph->evalOpParm(myGroup, nodeidx, "group", time, 0);
303  myDoXform = false;
304  if (true)
305  graph->evalOpParm(myDoXform, nodeidx, "doxform", time, 0);
306  myDoRot = 0;
307  if (true && ( (!((((graph->getInput(nodeidx,1)>=0)==0))||((getDoXform()==0)))) ) )
308  graph->evalOpParm(myDoRot, nodeidx, "dorot", time, 0);
309  myXord = 0;
310  if (true && ( (!(((getDoXform()==0)))) ) )
311  graph->evalOpParm(myXord, nodeidx, "xOrd", time, 0);
312  myRord = 0;
313  if (true && ( (!(((getDoXform()==0)))) ) )
314  graph->evalOpParm(myRord, nodeidx, "rOrd", time, 0);
315  myT = UT_Vector3D(0,0,0);
316  if (true && ( (!(((getDoXform()==0)))) ) )
317  graph->evalOpParm(myT, nodeidx, "t", time, 0);
318  myR = UT_Vector3D(0,0,0);
319  if (true && ( (!(((getDoXform()==0)))) ) )
320  graph->evalOpParm(myR, nodeidx, "r", time, 0);
321  myS = UT_Vector3D(1,1,1);
322  if (true && ( (!(((getDoXform()==0)))) ) )
323  graph->evalOpParm(myS, nodeidx, "s", time, 0);
324  myShear = UT_Vector3D(0,0,0);
325  if (true && ( (!(((getDoXform()==0)))) ) )
326  graph->evalOpParm(myShear, nodeidx, "shear", time, 0);
327  myP = UT_Vector3D(0,0,0);
328  if (true && ( (!(((getDoXform()==0)))) ) )
329  graph->evalOpParm(myP, nodeidx, "p", time, 0);
330  myPr = UT_Vector3D(0,0,0);
331  if (true && ( (!(((getDoXform()==0)))) ) )
332  graph->evalOpParm(myPr, nodeidx, "pr", time, 0);
333  myLookatpath = ""_sh;
334  if (true && ( (!(((getDoXform()==0)))) ) )
335  graph->evalOpParm(myLookatpath, nodeidx, "lookatpath", time, 0);
336  myUpvector = UT_Vector3D(0,0,0);
337  if (true && ( (!(((getDoXform()==0))||((getLookatpath()=="")))) ) )
338  graph->evalOpParm(myUpvector, nodeidx, "upvector", time, 0);
339  myXformattribs = "N"_sh;
340  if (true && ( (!(((getDoXform()==0)))) ) )
341  graph->evalOpParm(myXformattribs, nodeidx, "xformattribs", time, 0);
342  myDoclr = 0;
343  if (true)
344  graph->evalOpParm(myDoclr, nodeidx, "doclr", time, 0);
345  myDiff = UT_Vector3D(0,0,0);
346  if (true && ( (!(((int64(getDoclr())!=1)))) ) )
347  graph->evalOpParm(myDiff, nodeidx, "diff", time, 0);
348  myDoalpha = 0;
349  if (true)
350  graph->evalOpParm(myDoalpha, nodeidx, "doalpha", time, 0);
351  myAlpha = 0;
352  if (true && ( (!(((int64(getDoalpha())!=1)))) ) )
353  graph->evalOpParm(myAlpha, nodeidx, "alpha", time, 0);
354  myDocrease = 0;
355  if (true)
356  graph->evalOpParm(myDocrease, nodeidx, "docrease", time, 0);
357  myCrease = 0;
358  if (true && ( (!(((int64(getDocrease())!=1)))) ) )
359  graph->evalOpParm(myCrease, nodeidx, "crease", time, 0);
360  myDotexture = 0;
361  if (true)
362  graph->evalOpParm(myDotexture, nodeidx, "dotexture", time, 0);
363  myTexture = ""_sh;
364  if (true && ( (!(((int64(getDotexture())!=1)))) ) )
365  graph->evalOpParm(myTexture, nodeidx, "texture", time, 0);
366  myCloseu = 0;
367  if (true)
368  graph->evalOpParm(myCloseu, nodeidx, "closeu", time, 0);
369  myClosev = 0;
370  if (true)
371  graph->evalOpParm(myClosev, nodeidx, "closev", time, 0);
372  myClampu = 0;
373  if (true)
374  graph->evalOpParm(myClampu, nodeidx, "clampu", time, 0);
375  myClampv = 0;
376  if (true)
377  graph->evalOpParm(myClampv, nodeidx, "clampv", time, 0);
378  myVtxsort = 0;
379  if (true)
380  graph->evalOpParm(myVtxsort, nodeidx, "vtxsort", time, 0);
381  myVtxuoff = 0;
382  if (true && ( (!(((int64(getVtxsort())!=5)))) ) )
383  graph->evalOpParm(myVtxuoff, nodeidx, "vtxuoff", time, 0);
384  myVtxvoff = 0;
385  if (true && ( (!(((int64(getVtxsort())!=5)))) ) )
386  graph->evalOpParm(myVtxvoff, nodeidx, "vtxvoff", time, 0);
387  myDoweight = false;
388  if (true)
389  graph->evalOpParm(myDoweight, nodeidx, "doweight", time, 0);
390  myMetaweight = 0;
391  if (true && ( (!(((getDoweight()==0)))) ) )
392  graph->evalOpParm(myMetaweight, nodeidx, "metaweight", time, 0);
393  myDoprender = false;
394  if (true)
395  graph->evalOpParm(myDoprender, nodeidx, "doprender", time, 0);
396  myPrtype = 0;
397  if (true && ( (!(((getDoprender()==0)))) ) )
398  graph->evalOpParm(myPrtype, nodeidx, "prtype", time, 0);
399  myPrsize = 0.05;
400  if (true && ( (!(((getDoprender()==0)))) ) )
401  graph->evalOpParm(myPrsize, nodeidx, "prsize", time, 0);
402  myPrblur = 0;
403  if (true && ( (!(((getDoprender()==0)))) ) )
404  graph->evalOpParm(myPrblur, nodeidx, "prblur", time, 0);
405  myDovolvis = false;
406  if (true)
407  graph->evalOpParm(myDovolvis, nodeidx, "dovolvis", time, 0);
408  myVolvis = 0;
409  if (true && ( (!(((getDovolvis()==0)))) ) )
410  graph->evalOpParm(myVolvis, nodeidx, "volvis", time, 0);
411  myVolvisiso = 0;
412  if (true && ( (!(((getDovolvis()==0)))) ) )
413  graph->evalOpParm(myVolvisiso, nodeidx, "volvisiso", time, 0);
414  myVolvisdensity = 1;
415  if (true && ( (!(((getDovolvis()==0)))) ) )
416  graph->evalOpParm(myVolvisdensity, nodeidx, "volvisdensity", time, 0);
417  myDotaper = false;
418  if (true)
419  graph->evalOpParm(myDotaper, nodeidx, "dotaper", time, 0);
420  myTaper = UT_Vector2D(1,1);
421  if (true && ( (!(((getDotaper()==0)))) ) )
422  graph->evalOpParm(myTaper, nodeidx, "taper", time, 0);
423  myDovolume = false;
424  if (true)
425  graph->evalOpParm(myDovolume, nodeidx, "dovolume", time, 0);
426  myVolborder = 0;
427  if (true && ( (!(((getDovolume()==0)))) ) )
428  graph->evalOpParm(myVolborder, nodeidx, "volborder", time, 0);
429  myVolborderval = 0;
430  if (true && ( (!(((getDovolume()==0)))) ) )
431  graph->evalOpParm(myVolborderval, nodeidx, "volborderval", time, 0);
432  myDovoltol = false;
433  if (true)
434  graph->evalOpParm(myDovoltol, nodeidx, "dovoltol", time, 0);
435  myVoltol = 0;
436  if (true && ( (!(((getDovoltol()==0)))) ) )
437  graph->evalOpParm(myVoltol, nodeidx, "voltol", time, 0);
438  myDovdbclass = false;
439  if (true)
440  graph->evalOpParm(myDovdbclass, nodeidx, "dovdbclass", time, 0);
441  myVdbclass = 0;
442  if (true && ( (!(((getDovdbclass()==0)))) ) )
443  graph->evalOpParm(myVdbclass, nodeidx, "vdbclass", time, 0);
444  myDovdbcreator = false;
445  if (true)
446  graph->evalOpParm(myDovdbcreator, nodeidx, "dovdbcreator", time, 0);
447  myVdbcreator = ""_sh;
448  if (true && ( (!(((getDovdbcreator()==0)))) ) )
449  graph->evalOpParm(myVdbcreator, nodeidx, "vdbcreator", time, 0);
450  myDovdbtransform = false;
451  if (true)
452  graph->evalOpParm(myDovdbtransform, nodeidx, "dovdbtransform", time, 0);
453  myVdbtransform = false;
454  if (true && ( (!(((getDovdbtransform()==0)))) ) )
455  graph->evalOpParm(myVdbtransform, nodeidx, "vdbtransform", time, 0);
456  myDovdbvectype = false;
457  if (true)
458  graph->evalOpParm(myDovdbvectype, nodeidx, "dovdbvectype", time, 0);
459  myVdbvectype = 0;
460  if (true && ( (!(((getDovdbvectype()==0)))) ) )
461  graph->evalOpParm(myVdbvectype, nodeidx, "vdbvectype", time, 0);
462  myDovdbhalf = false;
463  if (true)
464  graph->evalOpParm(myDovdbhalf, nodeidx, "dovdbhalf", time, 0);
465  myVdbhalf = false;
466  if (true && ( (!(((getDovdbhalf()==0)))) ) )
467  graph->evalOpParm(myVdbhalf, nodeidx, "vdbhalf", time, 0);
468  myTemplategrp = ""_sh;
469  if (true && ( (!((((graph->getInput(nodeidx,1)>=0)==0))||((getDoXform()==0)))) ) )
470  graph->evalOpParm(myTemplategrp, nodeidx, "templateGrp", time, 0);
471  myPshapeu = false;
472  if (true && ( (!(((int64(getCloseu())==0)&&(int64(getClampu())==0)))) ) )
473  graph->evalOpParm(myPshapeu, nodeidx, "pshapeu", time, 0);
474  myPshapev = false;
475  if (true && ( (!(((int64(getClosev())==0)&&(int64(getClampv())==0)))) ) )
476  graph->evalOpParm(myPshapev, nodeidx, "pshapev", time, 0);
477 
478  }
479 
480 
481  void loadFromOpSubclass(const LoadParms &loadparms) override
482  {
483  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
484  }
485 
486 
487  void copyFrom(const SOP_NodeParms *src) override
488  {
489  *this = *((const SOP_PrimitiveParms *)src);
490  }
491 
492  template <typename T>
493  void
494  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
495  {
496  if (idx.size() < 1)
497  return;
498  UT_ASSERT(idx.size() == instance.size()+1);
499  if (idx.size() != instance.size()+1)
500  return;
501  switch (idx[0])
502  {
503  case 0:
504  coerceValue(value, myGroup);
505  break;
506  case 1:
507  coerceValue(value, myDoXform);
508  break;
509  case 2:
510  coerceValue(value, myDoRot);
511  break;
512  case 3:
513  coerceValue(value, myXord);
514  break;
515  case 4:
516  coerceValue(value, myRord);
517  break;
518  case 5:
519  coerceValue(value, myT);
520  break;
521  case 6:
522  coerceValue(value, myR);
523  break;
524  case 7:
525  coerceValue(value, myS);
526  break;
527  case 8:
528  coerceValue(value, myShear);
529  break;
530  case 9:
531  coerceValue(value, myP);
532  break;
533  case 10:
534  coerceValue(value, myPr);
535  break;
536  case 11:
537  coerceValue(value, myLookatpath);
538  break;
539  case 12:
540  coerceValue(value, myUpvector);
541  break;
542  case 13:
543  coerceValue(value, myXformattribs);
544  break;
545  case 14:
546  coerceValue(value, myDoclr);
547  break;
548  case 15:
549  coerceValue(value, myDiff);
550  break;
551  case 16:
552  coerceValue(value, myDoalpha);
553  break;
554  case 17:
555  coerceValue(value, myAlpha);
556  break;
557  case 18:
558  coerceValue(value, myDocrease);
559  break;
560  case 19:
561  coerceValue(value, myCrease);
562  break;
563  case 20:
564  coerceValue(value, myDotexture);
565  break;
566  case 21:
567  coerceValue(value, myTexture);
568  break;
569  case 22:
570  coerceValue(value, myCloseu);
571  break;
572  case 23:
573  coerceValue(value, myClosev);
574  break;
575  case 24:
576  coerceValue(value, myClampu);
577  break;
578  case 25:
579  coerceValue(value, myClampv);
580  break;
581  case 26:
582  coerceValue(value, myVtxsort);
583  break;
584  case 27:
585  coerceValue(value, myVtxuoff);
586  break;
587  case 28:
588  coerceValue(value, myVtxvoff);
589  break;
590  case 29:
591  coerceValue(value, myDoweight);
592  break;
593  case 30:
594  coerceValue(value, myMetaweight);
595  break;
596  case 31:
597  coerceValue(value, myDoprender);
598  break;
599  case 32:
600  coerceValue(value, myPrtype);
601  break;
602  case 33:
603  coerceValue(value, myPrsize);
604  break;
605  case 34:
606  coerceValue(value, myPrblur);
607  break;
608  case 35:
609  coerceValue(value, myDovolvis);
610  break;
611  case 36:
612  coerceValue(value, myVolvis);
613  break;
614  case 37:
615  coerceValue(value, myVolvisiso);
616  break;
617  case 38:
618  coerceValue(value, myVolvisdensity);
619  break;
620  case 39:
621  coerceValue(value, myDotaper);
622  break;
623  case 40:
624  coerceValue(value, myTaper);
625  break;
626  case 41:
627  coerceValue(value, myDovolume);
628  break;
629  case 42:
630  coerceValue(value, myVolborder);
631  break;
632  case 43:
633  coerceValue(value, myVolborderval);
634  break;
635  case 44:
636  coerceValue(value, myDovoltol);
637  break;
638  case 45:
639  coerceValue(value, myVoltol);
640  break;
641  case 46:
642  coerceValue(value, myDovdbclass);
643  break;
644  case 47:
645  coerceValue(value, myVdbclass);
646  break;
647  case 48:
648  coerceValue(value, myDovdbcreator);
649  break;
650  case 49:
651  coerceValue(value, myVdbcreator);
652  break;
653  case 50:
654  coerceValue(value, myDovdbtransform);
655  break;
656  case 51:
657  coerceValue(value, myVdbtransform);
658  break;
659  case 52:
660  coerceValue(value, myDovdbvectype);
661  break;
662  case 53:
663  coerceValue(value, myVdbvectype);
664  break;
665  case 54:
666  coerceValue(value, myDovdbhalf);
667  break;
668  case 55:
669  coerceValue(value, myVdbhalf);
670  break;
671  case 56:
672  coerceValue(value, myTemplategrp);
673  break;
674  case 57:
675  coerceValue(value, myPshapeu);
676  break;
677  case 58:
678  coerceValue(value, myPshapev);
679  break;
680 
681  }
682  }
683 
684  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
685  { doGetParmValue(idx, instance, value); }
686  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
687  { doGetParmValue(idx, instance, value); }
688  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
689  { doGetParmValue(idx, instance, value); }
690  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
691  { doGetParmValue(idx, instance, value); }
692  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
693  { doGetParmValue(idx, instance, value); }
694  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
695  { doGetParmValue(idx, instance, value); }
696  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
697  { doGetParmValue(idx, instance, value); }
698  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
699  { doGetParmValue(idx, instance, value); }
700  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
701  { doGetParmValue(idx, instance, value); }
702  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
703  { doGetParmValue(idx, instance, value); }
704  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
705  { doGetParmValue(idx, instance, value); }
706 
707  template <typename T>
708  void
709  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
710  {
711  if (idx.size() < 1)
712  return;
713  UT_ASSERT(idx.size() == instance.size()+1);
714  if (idx.size() != instance.size()+1)
715  return;
716  switch (idx[0])
717  {
718  case 0:
719  coerceValue(myGroup, value);
720  break;
721  case 1:
722  coerceValue(myDoXform, value);
723  break;
724  case 2:
725  coerceValue(myDoRot, value);
726  break;
727  case 3:
728  coerceValue(myXord, value);
729  break;
730  case 4:
731  coerceValue(myRord, value);
732  break;
733  case 5:
734  coerceValue(myT, value);
735  break;
736  case 6:
737  coerceValue(myR, value);
738  break;
739  case 7:
740  coerceValue(myS, value);
741  break;
742  case 8:
743  coerceValue(myShear, value);
744  break;
745  case 9:
746  coerceValue(myP, value);
747  break;
748  case 10:
749  coerceValue(myPr, value);
750  break;
751  case 11:
752  coerceValue(myLookatpath, value);
753  break;
754  case 12:
755  coerceValue(myUpvector, value);
756  break;
757  case 13:
758  coerceValue(myXformattribs, value);
759  break;
760  case 14:
761  coerceValue(myDoclr, value);
762  break;
763  case 15:
764  coerceValue(myDiff, value);
765  break;
766  case 16:
767  coerceValue(myDoalpha, value);
768  break;
769  case 17:
770  coerceValue(myAlpha, value);
771  break;
772  case 18:
773  coerceValue(myDocrease, value);
774  break;
775  case 19:
776  coerceValue(myCrease, value);
777  break;
778  case 20:
779  coerceValue(myDotexture, value);
780  break;
781  case 21:
782  coerceValue(myTexture, value);
783  break;
784  case 22:
785  coerceValue(myCloseu, value);
786  break;
787  case 23:
788  coerceValue(myClosev, value);
789  break;
790  case 24:
791  coerceValue(myClampu, value);
792  break;
793  case 25:
794  coerceValue(myClampv, value);
795  break;
796  case 26:
797  coerceValue(myVtxsort, value);
798  break;
799  case 27:
800  coerceValue(myVtxuoff, value);
801  break;
802  case 28:
803  coerceValue(myVtxvoff, value);
804  break;
805  case 29:
806  coerceValue(myDoweight, value);
807  break;
808  case 30:
809  coerceValue(myMetaweight, value);
810  break;
811  case 31:
812  coerceValue(myDoprender, value);
813  break;
814  case 32:
815  coerceValue(myPrtype, value);
816  break;
817  case 33:
818  coerceValue(myPrsize, value);
819  break;
820  case 34:
821  coerceValue(myPrblur, value);
822  break;
823  case 35:
824  coerceValue(myDovolvis, value);
825  break;
826  case 36:
827  coerceValue(myVolvis, value);
828  break;
829  case 37:
830  coerceValue(myVolvisiso, value);
831  break;
832  case 38:
833  coerceValue(myVolvisdensity, value);
834  break;
835  case 39:
836  coerceValue(myDotaper, value);
837  break;
838  case 40:
839  coerceValue(myTaper, value);
840  break;
841  case 41:
842  coerceValue(myDovolume, value);
843  break;
844  case 42:
845  coerceValue(myVolborder, value);
846  break;
847  case 43:
848  coerceValue(myVolborderval, value);
849  break;
850  case 44:
851  coerceValue(myDovoltol, value);
852  break;
853  case 45:
854  coerceValue(myVoltol, value);
855  break;
856  case 46:
857  coerceValue(myDovdbclass, value);
858  break;
859  case 47:
860  coerceValue(myVdbclass, value);
861  break;
862  case 48:
863  coerceValue(myDovdbcreator, value);
864  break;
865  case 49:
866  coerceValue(myVdbcreator, value);
867  break;
868  case 50:
869  coerceValue(myDovdbtransform, value);
870  break;
871  case 51:
872  coerceValue(myVdbtransform, value);
873  break;
874  case 52:
875  coerceValue(myDovdbvectype, value);
876  break;
877  case 53:
878  coerceValue(myVdbvectype, value);
879  break;
880  case 54:
881  coerceValue(myDovdbhalf, value);
882  break;
883  case 55:
884  coerceValue(myVdbhalf, value);
885  break;
886  case 56:
887  coerceValue(myTemplategrp, value);
888  break;
889  case 57:
890  coerceValue(myPshapeu, value);
891  break;
892  case 58:
893  coerceValue(myPshapev, value);
894  break;
895 
896  }
897  }
898 
899  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
900  { doSetParmValue(idx, instance, value); }
901  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
902  { doSetParmValue(idx, instance, value); }
903  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
904  { doSetParmValue(idx, instance, value); }
905  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
906  { doSetParmValue(idx, instance, value); }
907  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
908  { doSetParmValue(idx, instance, value); }
909  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
910  { doSetParmValue(idx, instance, value); }
911  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
912  { doSetParmValue(idx, instance, value); }
913  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
914  { doSetParmValue(idx, instance, value); }
915  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
916  { doSetParmValue(idx, instance, value); }
917  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
918  { doSetParmValue(idx, instance, value); }
919  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
920  { doSetParmValue(idx, instance, value); }
921 
922  exint getNestNumParms(TempIndex idx) const override
923  {
924  if (idx.size() == 0)
925  return 59;
926  switch (idx[0])
927  {
928 
929  }
930  // Invalid
931  return 0;
932  }
933 
934  const char *getNestParmName(TempIndex fieldnum) const override
935  {
936  if (fieldnum.size() < 1)
937  return 0;
938  switch (fieldnum[0])
939  {
940  case 0:
941  return "group";
942  case 1:
943  return "doxform";
944  case 2:
945  return "dorot";
946  case 3:
947  return "xOrd";
948  case 4:
949  return "rOrd";
950  case 5:
951  return "t";
952  case 6:
953  return "r";
954  case 7:
955  return "s";
956  case 8:
957  return "shear";
958  case 9:
959  return "p";
960  case 10:
961  return "pr";
962  case 11:
963  return "lookatpath";
964  case 12:
965  return "upvector";
966  case 13:
967  return "xformattribs";
968  case 14:
969  return "doclr";
970  case 15:
971  return "diff";
972  case 16:
973  return "doalpha";
974  case 17:
975  return "alpha";
976  case 18:
977  return "docrease";
978  case 19:
979  return "crease";
980  case 20:
981  return "dotexture";
982  case 21:
983  return "texture";
984  case 22:
985  return "closeu";
986  case 23:
987  return "closev";
988  case 24:
989  return "clampu";
990  case 25:
991  return "clampv";
992  case 26:
993  return "vtxsort";
994  case 27:
995  return "vtxuoff";
996  case 28:
997  return "vtxvoff";
998  case 29:
999  return "doweight";
1000  case 30:
1001  return "metaweight";
1002  case 31:
1003  return "doprender";
1004  case 32:
1005  return "prtype";
1006  case 33:
1007  return "prsize";
1008  case 34:
1009  return "prblur";
1010  case 35:
1011  return "dovolvis";
1012  case 36:
1013  return "volvis";
1014  case 37:
1015  return "volvisiso";
1016  case 38:
1017  return "volvisdensity";
1018  case 39:
1019  return "dotaper";
1020  case 40:
1021  return "taper";
1022  case 41:
1023  return "dovolume";
1024  case 42:
1025  return "volborder";
1026  case 43:
1027  return "volborderval";
1028  case 44:
1029  return "dovoltol";
1030  case 45:
1031  return "voltol";
1032  case 46:
1033  return "dovdbclass";
1034  case 47:
1035  return "vdbclass";
1036  case 48:
1037  return "dovdbcreator";
1038  case 49:
1039  return "vdbcreator";
1040  case 50:
1041  return "dovdbtransform";
1042  case 51:
1043  return "vdbtransform";
1044  case 52:
1045  return "dovdbvectype";
1046  case 53:
1047  return "vdbvectype";
1048  case 54:
1049  return "dovdbhalf";
1050  case 55:
1051  return "vdbhalf";
1052  case 56:
1053  return "templateGrp";
1054  case 57:
1055  return "pshapeu";
1056  case 58:
1057  return "pshapev";
1058 
1059  }
1060  return 0;
1061  }
1062 
1063  ParmType getNestParmType(TempIndex fieldnum) const override
1064  {
1065  if (fieldnum.size() < 1)
1066  return PARM_UNSUPPORTED;
1067  switch (fieldnum[0])
1068  {
1069  case 0:
1070  return PARM_STRING;
1071  case 1:
1072  return PARM_INTEGER;
1073  case 2:
1074  return PARM_INTEGER;
1075  case 3:
1076  return PARM_INTEGER;
1077  case 4:
1078  return PARM_INTEGER;
1079  case 5:
1080  return PARM_VECTOR3;
1081  case 6:
1082  return PARM_VECTOR3;
1083  case 7:
1084  return PARM_VECTOR3;
1085  case 8:
1086  return PARM_VECTOR3;
1087  case 9:
1088  return PARM_VECTOR3;
1089  case 10:
1090  return PARM_VECTOR3;
1091  case 11:
1092  return PARM_STRING;
1093  case 12:
1094  return PARM_VECTOR3;
1095  case 13:
1096  return PARM_STRING;
1097  case 14:
1098  return PARM_INTEGER;
1099  case 15:
1100  return PARM_VECTOR3;
1101  case 16:
1102  return PARM_INTEGER;
1103  case 17:
1104  return PARM_FLOAT;
1105  case 18:
1106  return PARM_INTEGER;
1107  case 19:
1108  return PARM_FLOAT;
1109  case 20:
1110  return PARM_INTEGER;
1111  case 21:
1112  return PARM_STRING;
1113  case 22:
1114  return PARM_INTEGER;
1115  case 23:
1116  return PARM_INTEGER;
1117  case 24:
1118  return PARM_INTEGER;
1119  case 25:
1120  return PARM_INTEGER;
1121  case 26:
1122  return PARM_INTEGER;
1123  case 27:
1124  return PARM_INTEGER;
1125  case 28:
1126  return PARM_INTEGER;
1127  case 29:
1128  return PARM_INTEGER;
1129  case 30:
1130  return PARM_FLOAT;
1131  case 31:
1132  return PARM_INTEGER;
1133  case 32:
1134  return PARM_INTEGER;
1135  case 33:
1136  return PARM_FLOAT;
1137  case 34:
1138  return PARM_FLOAT;
1139  case 35:
1140  return PARM_INTEGER;
1141  case 36:
1142  return PARM_INTEGER;
1143  case 37:
1144  return PARM_FLOAT;
1145  case 38:
1146  return PARM_FLOAT;
1147  case 39:
1148  return PARM_INTEGER;
1149  case 40:
1150  return PARM_VECTOR2;
1151  case 41:
1152  return PARM_INTEGER;
1153  case 42:
1154  return PARM_INTEGER;
1155  case 43:
1156  return PARM_FLOAT;
1157  case 44:
1158  return PARM_INTEGER;
1159  case 45:
1160  return PARM_FLOAT;
1161  case 46:
1162  return PARM_INTEGER;
1163  case 47:
1164  return PARM_INTEGER;
1165  case 48:
1166  return PARM_INTEGER;
1167  case 49:
1168  return PARM_STRING;
1169  case 50:
1170  return PARM_INTEGER;
1171  case 51:
1172  return PARM_INTEGER;
1173  case 52:
1174  return PARM_INTEGER;
1175  case 53:
1176  return PARM_INTEGER;
1177  case 54:
1178  return PARM_INTEGER;
1179  case 55:
1180  return PARM_INTEGER;
1181  case 56:
1182  return PARM_STRING;
1183  case 57:
1184  return PARM_INTEGER;
1185  case 58:
1186  return PARM_INTEGER;
1187 
1188  }
1189  return PARM_UNSUPPORTED;
1190  }
1191 
1192  // Boiler plate to load individual types.
1193  static void loadData(UT_IStream &is, int64 &v)
1194  { is.bread(&v, 1); }
1195  static void loadData(UT_IStream &is, bool &v)
1196  { int64 iv; is.bread(&iv, 1); v = iv; }
1197  static void loadData(UT_IStream &is, fpreal64 &v)
1198  { is.bread<fpreal64>(&v, 1); }
1199  static void loadData(UT_IStream &is, UT_Vector2D &v)
1200  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
1201  static void loadData(UT_IStream &is, UT_Vector3D &v)
1202  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1203  is.bread<fpreal64>(&v.z(), 1); }
1204  static void loadData(UT_IStream &is, UT_Vector4D &v)
1205  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1206  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
1207  static void loadData(UT_IStream &is, UT_Matrix2D &v)
1208  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
1209  static void loadData(UT_IStream &is, UT_Matrix3D &v)
1210  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
1211  static void loadData(UT_IStream &is, UT_Matrix4D &v)
1212  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
1213  static void loadData(UT_IStream &is, UT_Vector2I &v)
1214  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
1215  static void loadData(UT_IStream &is, UT_Vector3I &v)
1216  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1217  is.bread<int64>(&v.z(), 1); }
1218  static void loadData(UT_IStream &is, UT_Vector4I &v)
1219  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1220  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
1222  { is.bread(v); }
1224  { UT_StringHolder rampdata;
1225  loadData(is, rampdata);
1226  if (rampdata.isstring())
1227  {
1228  v.reset(new UT_Ramp());
1229  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
1230  v->load(istr);
1231  }
1232  else v.reset();
1233  }
1236  loadData(is, data);
1237  if (data.isstring())
1238  {
1239  // Find the data type.
1240  const char *colon = UT_StringWrap(data).findChar(':');
1241  if (colon)
1242  {
1243  int typelen = colon - data.buffer();
1245  type.strncpy(data.buffer(), typelen);
1246  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
1247 
1248  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
1249  }
1250  }
1251  else v.reset();
1252  }
1253 
1254  static void saveData(std::ostream &os, int64 v)
1255  { UTwrite(os, &v); }
1256  static void saveData(std::ostream &os, bool v)
1257  { int64 iv = v; UTwrite(os, &iv); }
1258  static void saveData(std::ostream &os, fpreal64 v)
1259  { UTwrite<fpreal64>(os, &v); }
1260  static void saveData(std::ostream &os, UT_Vector2D v)
1261  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
1262  static void saveData(std::ostream &os, UT_Vector3D v)
1263  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1264  UTwrite<fpreal64>(os, &v.z()); }
1265  static void saveData(std::ostream &os, UT_Vector4D v)
1266  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1267  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
1268  static void saveData(std::ostream &os, UT_Matrix2D v)
1270  static void saveData(std::ostream &os, UT_Matrix3D v)
1272  static void saveData(std::ostream &os, UT_Matrix4D v)
1274  static void saveData(std::ostream &os, UT_StringHolder s)
1275  { UT_StringWrap(s).saveBinary(os); }
1276  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
1278  UT_OStringStream ostr;
1279  if (s) s->save(ostr);
1280  result = ostr.str();
1281  saveData(os, result);
1282  }
1283  static void saveData(std::ostream &os, PRM_DataItemHandle s)
1285  UT_OStringStream ostr;
1286  if (s)
1287  {
1288  ostr << s->getDataTypeToken();
1289  ostr << ":";
1290  s->saveBinary(ostr);
1291  }
1292  result = ostr.str();
1293  saveData(os, result);
1294  }
1295 
1296 
1297  void save(std::ostream &os) const
1298  {
1299  int32 v = version();
1300  UTwrite(os, &v);
1301  saveData(os, myGroup);
1302  saveData(os, myDoXform);
1303  saveData(os, myDoRot);
1304  saveData(os, myXord);
1305  saveData(os, myRord);
1306  saveData(os, myT);
1307  saveData(os, myR);
1308  saveData(os, myS);
1309  saveData(os, myShear);
1310  saveData(os, myP);
1311  saveData(os, myPr);
1312  saveData(os, myLookatpath);
1313  saveData(os, myUpvector);
1314  saveData(os, myXformattribs);
1315  saveData(os, myDoclr);
1316  saveData(os, myDiff);
1317  saveData(os, myDoalpha);
1318  saveData(os, myAlpha);
1319  saveData(os, myDocrease);
1320  saveData(os, myCrease);
1321  saveData(os, myDotexture);
1322  saveData(os, myTexture);
1323  saveData(os, myCloseu);
1324  saveData(os, myClosev);
1325  saveData(os, myClampu);
1326  saveData(os, myClampv);
1327  saveData(os, myVtxsort);
1328  saveData(os, myVtxuoff);
1329  saveData(os, myVtxvoff);
1330  saveData(os, myDoweight);
1331  saveData(os, myMetaweight);
1332  saveData(os, myDoprender);
1333  saveData(os, myPrtype);
1334  saveData(os, myPrsize);
1335  saveData(os, myPrblur);
1336  saveData(os, myDovolvis);
1337  saveData(os, myVolvis);
1338  saveData(os, myVolvisiso);
1339  saveData(os, myVolvisdensity);
1340  saveData(os, myDotaper);
1341  saveData(os, myTaper);
1342  saveData(os, myDovolume);
1343  saveData(os, myVolborder);
1344  saveData(os, myVolborderval);
1345  saveData(os, myDovoltol);
1346  saveData(os, myVoltol);
1347  saveData(os, myDovdbclass);
1348  saveData(os, myVdbclass);
1349  saveData(os, myDovdbcreator);
1350  saveData(os, myVdbcreator);
1351  saveData(os, myDovdbtransform);
1352  saveData(os, myVdbtransform);
1353  saveData(os, myDovdbvectype);
1354  saveData(os, myVdbvectype);
1355  saveData(os, myDovdbhalf);
1356  saveData(os, myVdbhalf);
1357  saveData(os, myTemplategrp);
1358  saveData(os, myPshapeu);
1359  saveData(os, myPshapev);
1360 
1361  }
1362 
1363  bool load(UT_IStream &is)
1364  {
1365  int32 v;
1366  is.bread(&v, 1);
1367  if (version() != v)
1368  {
1369  // Fail incompatible versions
1370  return false;
1371  }
1372  loadData(is, myGroup);
1373  loadData(is, myDoXform);
1374  loadData(is, myDoRot);
1375  loadData(is, myXord);
1376  loadData(is, myRord);
1377  loadData(is, myT);
1378  loadData(is, myR);
1379  loadData(is, myS);
1380  loadData(is, myShear);
1381  loadData(is, myP);
1382  loadData(is, myPr);
1383  loadData(is, myLookatpath);
1384  loadData(is, myUpvector);
1385  loadData(is, myXformattribs);
1386  loadData(is, myDoclr);
1387  loadData(is, myDiff);
1388  loadData(is, myDoalpha);
1389  loadData(is, myAlpha);
1390  loadData(is, myDocrease);
1391  loadData(is, myCrease);
1392  loadData(is, myDotexture);
1393  loadData(is, myTexture);
1394  loadData(is, myCloseu);
1395  loadData(is, myClosev);
1396  loadData(is, myClampu);
1397  loadData(is, myClampv);
1398  loadData(is, myVtxsort);
1399  loadData(is, myVtxuoff);
1400  loadData(is, myVtxvoff);
1401  loadData(is, myDoweight);
1402  loadData(is, myMetaweight);
1403  loadData(is, myDoprender);
1404  loadData(is, myPrtype);
1405  loadData(is, myPrsize);
1406  loadData(is, myPrblur);
1407  loadData(is, myDovolvis);
1408  loadData(is, myVolvis);
1409  loadData(is, myVolvisiso);
1410  loadData(is, myVolvisdensity);
1411  loadData(is, myDotaper);
1412  loadData(is, myTaper);
1413  loadData(is, myDovolume);
1414  loadData(is, myVolborder);
1415  loadData(is, myVolborderval);
1416  loadData(is, myDovoltol);
1417  loadData(is, myVoltol);
1418  loadData(is, myDovdbclass);
1419  loadData(is, myVdbclass);
1420  loadData(is, myDovdbcreator);
1421  loadData(is, myVdbcreator);
1422  loadData(is, myDovdbtransform);
1423  loadData(is, myVdbtransform);
1424  loadData(is, myDovdbvectype);
1425  loadData(is, myVdbvectype);
1426  loadData(is, myDovdbhalf);
1427  loadData(is, myVdbhalf);
1428  loadData(is, myTemplategrp);
1429  loadData(is, myPshapeu);
1430  loadData(is, myPshapev);
1431 
1432  return true;
1433  }
1434 
1435  const UT_StringHolder & getGroup() const { return myGroup; }
1436  void setGroup(const UT_StringHolder & val) { myGroup = val; }
1438  {
1439  SOP_Node *thissop = cookparms.getNode();
1440  if (!thissop) return getGroup();
1442  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
1443  return result;
1444  }
1445  bool getDoXform() const { return myDoXform; }
1446  void setDoXform(bool val) { myDoXform = val; }
1447  bool opDoXform(const SOP_NodeVerb::CookParms &cookparms) const
1448  {
1449  SOP_Node *thissop = cookparms.getNode();
1450  if (!thissop) return getDoXform();
1451  bool result;
1452  OP_Utils::evalOpParm(result, thissop, "doxform", cookparms.getCookTime(), 0);
1453  return result;
1454  }
1455  DoRot getDoRot() const { return DoRot(myDoRot); }
1456  void setDoRot(DoRot val) { myDoRot = int64(val); }
1457  DoRot opDoRot(const SOP_NodeVerb::CookParms &cookparms) const
1458  {
1459  SOP_Node *thissop = cookparms.getNode();
1460  if (!thissop) return getDoRot();
1461  int64 result;
1462  OP_Utils::evalOpParm(result, thissop, "dorot", cookparms.getCookTime(), 0);
1463  return DoRot(result);
1464  }
1465  Xord getXord() const { return Xord(myXord); }
1466  void setXord(Xord val) { myXord = int64(val); }
1467  Xord opXord(const SOP_NodeVerb::CookParms &cookparms) const
1468  {
1469  SOP_Node *thissop = cookparms.getNode();
1470  if (!thissop) return getXord();
1471  int64 result;
1472  OP_Utils::evalOpParm(result, thissop, "xOrd", cookparms.getCookTime(), 0);
1473  return Xord(result);
1474  }
1475  Rord getRord() const { return Rord(myRord); }
1476  void setRord(Rord val) { myRord = int64(val); }
1477  Rord opRord(const SOP_NodeVerb::CookParms &cookparms) const
1478  {
1479  SOP_Node *thissop = cookparms.getNode();
1480  if (!thissop) return getRord();
1481  int64 result;
1482  OP_Utils::evalOpParm(result, thissop, "rOrd", cookparms.getCookTime(), 0);
1483  return Rord(result);
1484  }
1485  UT_Vector3D getT() const { return myT; }
1486  void setT(UT_Vector3D val) { myT = val; }
1487  UT_Vector3D opT(const SOP_NodeVerb::CookParms &cookparms) const
1488  {
1489  SOP_Node *thissop = cookparms.getNode();
1490  if (!thissop) return getT();
1492  OP_Utils::evalOpParm(result, thissop, "t", cookparms.getCookTime(), 0);
1493  return result;
1494  }
1495  UT_Vector3D getR() const { return myR; }
1496  void setR(UT_Vector3D val) { myR = val; }
1497  UT_Vector3D opR(const SOP_NodeVerb::CookParms &cookparms) const
1498  {
1499  SOP_Node *thissop = cookparms.getNode();
1500  if (!thissop) return getR();
1502  OP_Utils::evalOpParm(result, thissop, "r", cookparms.getCookTime(), 0);
1503  return result;
1504  }
1505  UT_Vector3D getS() const { return myS; }
1506  void setS(UT_Vector3D val) { myS = val; }
1507  UT_Vector3D opS(const SOP_NodeVerb::CookParms &cookparms) const
1508  {
1509  SOP_Node *thissop = cookparms.getNode();
1510  if (!thissop) return getS();
1512  OP_Utils::evalOpParm(result, thissop, "s", cookparms.getCookTime(), 0);
1513  return result;
1514  }
1515  UT_Vector3D getShear() const { return myShear; }
1516  void setShear(UT_Vector3D val) { myShear = val; }
1518  {
1519  SOP_Node *thissop = cookparms.getNode();
1520  if (!thissop) return getShear();
1522  OP_Utils::evalOpParm(result, thissop, "shear", cookparms.getCookTime(), 0);
1523  return result;
1524  }
1525  UT_Vector3D getP() const { return myP; }
1526  void setP(UT_Vector3D val) { myP = val; }
1527  UT_Vector3D opP(const SOP_NodeVerb::CookParms &cookparms) const
1528  {
1529  SOP_Node *thissop = cookparms.getNode();
1530  if (!thissop) return getP();
1532  OP_Utils::evalOpParm(result, thissop, "p", cookparms.getCookTime(), 0);
1533  return result;
1534  }
1535  UT_Vector3D getPr() const { return myPr; }
1536  void setPr(UT_Vector3D val) { myPr = val; }
1537  UT_Vector3D opPr(const SOP_NodeVerb::CookParms &cookparms) const
1538  {
1539  SOP_Node *thissop = cookparms.getNode();
1540  if (!thissop) return getPr();
1542  OP_Utils::evalOpParm(result, thissop, "pr", cookparms.getCookTime(), 0);
1543  return result;
1544  }
1545  const UT_StringHolder & getLookatpath() const { return myLookatpath; }
1546  void setLookatpath(const UT_StringHolder & val) { myLookatpath = val; }
1548  {
1549  SOP_Node *thissop = cookparms.getNode();
1550  if (!thissop) return getLookatpath();
1552  OP_Utils::evalOpParm(result, thissop, "lookatpath", cookparms.getCookTime(), 0);
1553  return result;
1554  }
1555  UT_Vector3D getUpvector() const { return myUpvector; }
1556  void setUpvector(UT_Vector3D val) { myUpvector = val; }
1558  {
1559  SOP_Node *thissop = cookparms.getNode();
1560  if (!thissop) return getUpvector();
1562  OP_Utils::evalOpParm(result, thissop, "upvector", cookparms.getCookTime(), 0);
1563  return result;
1564  }
1565  const UT_StringHolder & getXformattribs() const { return myXformattribs; }
1566  void setXformattribs(const UT_StringHolder & val) { myXformattribs = val; }
1568  {
1569  SOP_Node *thissop = cookparms.getNode();
1570  if (!thissop) return getXformattribs();
1572  OP_Utils::evalOpParm(result, thissop, "xformattribs", cookparms.getCookTime(), 0);
1573  return result;
1574  }
1575  Doclr getDoclr() const { return Doclr(myDoclr); }
1576  void setDoclr(Doclr val) { myDoclr = int64(val); }
1577  Doclr opDoclr(const SOP_NodeVerb::CookParms &cookparms) const
1578  {
1579  SOP_Node *thissop = cookparms.getNode();
1580  if (!thissop) return getDoclr();
1581  int64 result;
1582  OP_Utils::evalOpParm(result, thissop, "doclr", cookparms.getCookTime(), 0);
1583  return Doclr(result);
1584  }
1585  UT_Vector3D getDiff() const { return myDiff; }
1586  void setDiff(UT_Vector3D val) { myDiff = val; }
1588  {
1589  SOP_Node *thissop = cookparms.getNode();
1590  if (!thissop) return getDiff();
1592  OP_Utils::evalOpParm(result, thissop, "diff", cookparms.getCookTime(), 0);
1593  return result;
1594  }
1595  Doalpha getDoalpha() const { return Doalpha(myDoalpha); }
1596  void setDoalpha(Doalpha val) { myDoalpha = int64(val); }
1598  {
1599  SOP_Node *thissop = cookparms.getNode();
1600  if (!thissop) return getDoalpha();
1601  int64 result;
1602  OP_Utils::evalOpParm(result, thissop, "doalpha", cookparms.getCookTime(), 0);
1603  return Doalpha(result);
1604  }
1605  fpreal64 getAlpha() const { return myAlpha; }
1606  void setAlpha(fpreal64 val) { myAlpha = val; }
1607  fpreal64 opAlpha(const SOP_NodeVerb::CookParms &cookparms) const
1608  {
1609  SOP_Node *thissop = cookparms.getNode();
1610  if (!thissop) return getAlpha();
1611  fpreal64 result;
1612  OP_Utils::evalOpParm(result, thissop, "alpha", cookparms.getCookTime(), 0);
1613  return result;
1614  }
1615  Docrease getDocrease() const { return Docrease(myDocrease); }
1616  void setDocrease(Docrease val) { myDocrease = int64(val); }
1618  {
1619  SOP_Node *thissop = cookparms.getNode();
1620  if (!thissop) return getDocrease();
1621  int64 result;
1622  OP_Utils::evalOpParm(result, thissop, "docrease", cookparms.getCookTime(), 0);
1623  return Docrease(result);
1624  }
1625  fpreal64 getCrease() const { return myCrease; }
1626  void setCrease(fpreal64 val) { myCrease = val; }
1628  {
1629  SOP_Node *thissop = cookparms.getNode();
1630  if (!thissop) return getCrease();
1631  fpreal64 result;
1632  OP_Utils::evalOpParm(result, thissop, "crease", cookparms.getCookTime(), 0);
1633  return result;
1634  }
1635  Dotexture getDotexture() const { return Dotexture(myDotexture); }
1636  void setDotexture(Dotexture val) { myDotexture = int64(val); }
1638  {
1639  SOP_Node *thissop = cookparms.getNode();
1640  if (!thissop) return getDotexture();
1641  int64 result;
1642  OP_Utils::evalOpParm(result, thissop, "dotexture", cookparms.getCookTime(), 0);
1643  return Dotexture(result);
1644  }
1645  const UT_StringHolder & getTexture() const { return myTexture; }
1646  void setTexture(const UT_StringHolder & val) { myTexture = val; }
1648  {
1649  SOP_Node *thissop = cookparms.getNode();
1650  if (!thissop) return getTexture();
1652  OP_Utils::evalOpParm(result, thissop, "texture", cookparms.getCookTime(), 0);
1653  return result;
1654  }
1655  Closeu getCloseu() const { return Closeu(myCloseu); }
1656  void setCloseu(Closeu val) { myCloseu = int64(val); }
1657  Closeu opCloseu(const SOP_NodeVerb::CookParms &cookparms) const
1658  {
1659  SOP_Node *thissop = cookparms.getNode();
1660  if (!thissop) return getCloseu();
1661  int64 result;
1662  OP_Utils::evalOpParm(result, thissop, "closeu", cookparms.getCookTime(), 0);
1663  return Closeu(result);
1664  }
1665  Closev getClosev() const { return Closev(myClosev); }
1666  void setClosev(Closev val) { myClosev = int64(val); }
1667  Closev opClosev(const SOP_NodeVerb::CookParms &cookparms) const
1668  {
1669  SOP_Node *thissop = cookparms.getNode();
1670  if (!thissop) return getClosev();
1671  int64 result;
1672  OP_Utils::evalOpParm(result, thissop, "closev", cookparms.getCookTime(), 0);
1673  return Closev(result);
1674  }
1675  Clampu getClampu() const { return Clampu(myClampu); }
1676  void setClampu(Clampu val) { myClampu = int64(val); }
1677  Clampu opClampu(const SOP_NodeVerb::CookParms &cookparms) const
1678  {
1679  SOP_Node *thissop = cookparms.getNode();
1680  if (!thissop) return getClampu();
1681  int64 result;
1682  OP_Utils::evalOpParm(result, thissop, "clampu", cookparms.getCookTime(), 0);
1683  return Clampu(result);
1684  }
1685  Clampv getClampv() const { return Clampv(myClampv); }
1686  void setClampv(Clampv val) { myClampv = int64(val); }
1687  Clampv opClampv(const SOP_NodeVerb::CookParms &cookparms) const
1688  {
1689  SOP_Node *thissop = cookparms.getNode();
1690  if (!thissop) return getClampv();
1691  int64 result;
1692  OP_Utils::evalOpParm(result, thissop, "clampv", cookparms.getCookTime(), 0);
1693  return Clampv(result);
1694  }
1695  Vtxsort getVtxsort() const { return Vtxsort(myVtxsort); }
1696  void setVtxsort(Vtxsort val) { myVtxsort = int64(val); }
1698  {
1699  SOP_Node *thissop = cookparms.getNode();
1700  if (!thissop) return getVtxsort();
1701  int64 result;
1702  OP_Utils::evalOpParm(result, thissop, "vtxsort", cookparms.getCookTime(), 0);
1703  return Vtxsort(result);
1704  }
1705  int64 getVtxuoff() const { return myVtxuoff; }
1706  void setVtxuoff(int64 val) { myVtxuoff = val; }
1707  int64 opVtxuoff(const SOP_NodeVerb::CookParms &cookparms) const
1708  {
1709  SOP_Node *thissop = cookparms.getNode();
1710  if (!thissop) return getVtxuoff();
1711  int64 result;
1712  OP_Utils::evalOpParm(result, thissop, "vtxuoff", cookparms.getCookTime(), 0);
1713  return result;
1714  }
1715  int64 getVtxvoff() const { return myVtxvoff; }
1716  void setVtxvoff(int64 val) { myVtxvoff = val; }
1717  int64 opVtxvoff(const SOP_NodeVerb::CookParms &cookparms) const
1718  {
1719  SOP_Node *thissop = cookparms.getNode();
1720  if (!thissop) return getVtxvoff();
1721  int64 result;
1722  OP_Utils::evalOpParm(result, thissop, "vtxvoff", cookparms.getCookTime(), 0);
1723  return result;
1724  }
1725  bool getDoweight() const { return myDoweight; }
1726  void setDoweight(bool val) { myDoweight = val; }
1727  bool opDoweight(const SOP_NodeVerb::CookParms &cookparms) const
1728  {
1729  SOP_Node *thissop = cookparms.getNode();
1730  if (!thissop) return getDoweight();
1731  bool result;
1732  OP_Utils::evalOpParm(result, thissop, "doweight", cookparms.getCookTime(), 0);
1733  return result;
1734  }
1735  fpreal64 getMetaweight() const { return myMetaweight; }
1736  void setMetaweight(fpreal64 val) { myMetaweight = val; }
1738  {
1739  SOP_Node *thissop = cookparms.getNode();
1740  if (!thissop) return getMetaweight();
1741  fpreal64 result;
1742  OP_Utils::evalOpParm(result, thissop, "metaweight", cookparms.getCookTime(), 0);
1743  return result;
1744  }
1745  bool getDoprender() const { return myDoprender; }
1746  void setDoprender(bool val) { myDoprender = val; }
1747  bool opDoprender(const SOP_NodeVerb::CookParms &cookparms) const
1748  {
1749  SOP_Node *thissop = cookparms.getNode();
1750  if (!thissop) return getDoprender();
1751  bool result;
1752  OP_Utils::evalOpParm(result, thissop, "doprender", cookparms.getCookTime(), 0);
1753  return result;
1754  }
1755  Prtype getPrtype() const { return Prtype(myPrtype); }
1756  void setPrtype(Prtype val) { myPrtype = int64(val); }
1757  Prtype opPrtype(const SOP_NodeVerb::CookParms &cookparms) const
1758  {
1759  SOP_Node *thissop = cookparms.getNode();
1760  if (!thissop) return getPrtype();
1761  int64 result;
1762  OP_Utils::evalOpParm(result, thissop, "prtype", cookparms.getCookTime(), 0);
1763  return Prtype(result);
1764  }
1765  fpreal64 getPrsize() const { return myPrsize; }
1766  void setPrsize(fpreal64 val) { myPrsize = val; }
1768  {
1769  SOP_Node *thissop = cookparms.getNode();
1770  if (!thissop) return getPrsize();
1771  fpreal64 result;
1772  OP_Utils::evalOpParm(result, thissop, "prsize", cookparms.getCookTime(), 0);
1773  return result;
1774  }
1775  fpreal64 getPrblur() const { return myPrblur; }
1776  void setPrblur(fpreal64 val) { myPrblur = val; }
1778  {
1779  SOP_Node *thissop = cookparms.getNode();
1780  if (!thissop) return getPrblur();
1781  fpreal64 result;
1782  OP_Utils::evalOpParm(result, thissop, "prblur", cookparms.getCookTime(), 0);
1783  return result;
1784  }
1785  bool getDovolvis() const { return myDovolvis; }
1786  void setDovolvis(bool val) { myDovolvis = val; }
1787  bool opDovolvis(const SOP_NodeVerb::CookParms &cookparms) const
1788  {
1789  SOP_Node *thissop = cookparms.getNode();
1790  if (!thissop) return getDovolvis();
1791  bool result;
1792  OP_Utils::evalOpParm(result, thissop, "dovolvis", cookparms.getCookTime(), 0);
1793  return result;
1794  }
1795  Volvis getVolvis() const { return Volvis(myVolvis); }
1796  void setVolvis(Volvis val) { myVolvis = int64(val); }
1797  Volvis opVolvis(const SOP_NodeVerb::CookParms &cookparms) const
1798  {
1799  SOP_Node *thissop = cookparms.getNode();
1800  if (!thissop) return getVolvis();
1801  int64 result;
1802  OP_Utils::evalOpParm(result, thissop, "volvis", cookparms.getCookTime(), 0);
1803  return Volvis(result);
1804  }
1805  fpreal64 getVolvisiso() const { return myVolvisiso; }
1806  void setVolvisiso(fpreal64 val) { myVolvisiso = val; }
1808  {
1809  SOP_Node *thissop = cookparms.getNode();
1810  if (!thissop) return getVolvisiso();
1811  fpreal64 result;
1812  OP_Utils::evalOpParm(result, thissop, "volvisiso", cookparms.getCookTime(), 0);
1813  return result;
1814  }
1815  fpreal64 getVolvisdensity() const { return myVolvisdensity; }
1816  void setVolvisdensity(fpreal64 val) { myVolvisdensity = val; }
1818  {
1819  SOP_Node *thissop = cookparms.getNode();
1820  if (!thissop) return getVolvisdensity();
1821  fpreal64 result;
1822  OP_Utils::evalOpParm(result, thissop, "volvisdensity", cookparms.getCookTime(), 0);
1823  return result;
1824  }
1825  bool getDotaper() const { return myDotaper; }
1826  void setDotaper(bool val) { myDotaper = val; }
1827  bool opDotaper(const SOP_NodeVerb::CookParms &cookparms) const
1828  {
1829  SOP_Node *thissop = cookparms.getNode();
1830  if (!thissop) return getDotaper();
1831  bool result;
1832  OP_Utils::evalOpParm(result, thissop, "dotaper", cookparms.getCookTime(), 0);
1833  return result;
1834  }
1835  UT_Vector2D getTaper() const { return myTaper; }
1836  void setTaper(UT_Vector2D val) { myTaper = val; }
1838  {
1839  SOP_Node *thissop = cookparms.getNode();
1840  if (!thissop) return getTaper();
1842  OP_Utils::evalOpParm(result, thissop, "taper", cookparms.getCookTime(), 0);
1843  return result;
1844  }
1845  bool getDovolume() const { return myDovolume; }
1846  void setDovolume(bool val) { myDovolume = val; }
1847  bool opDovolume(const SOP_NodeVerb::CookParms &cookparms) const
1848  {
1849  SOP_Node *thissop = cookparms.getNode();
1850  if (!thissop) return getDovolume();
1851  bool result;
1852  OP_Utils::evalOpParm(result, thissop, "dovolume", cookparms.getCookTime(), 0);
1853  return result;
1854  }
1855  Volborder getVolborder() const { return Volborder(myVolborder); }
1856  void setVolborder(Volborder val) { myVolborder = int64(val); }
1858  {
1859  SOP_Node *thissop = cookparms.getNode();
1860  if (!thissop) return getVolborder();
1861  int64 result;
1862  OP_Utils::evalOpParm(result, thissop, "volborder", cookparms.getCookTime(), 0);
1863  return Volborder(result);
1864  }
1865  fpreal64 getVolborderval() const { return myVolborderval; }
1866  void setVolborderval(fpreal64 val) { myVolborderval = val; }
1868  {
1869  SOP_Node *thissop = cookparms.getNode();
1870  if (!thissop) return getVolborderval();
1871  fpreal64 result;
1872  OP_Utils::evalOpParm(result, thissop, "volborderval", cookparms.getCookTime(), 0);
1873  return result;
1874  }
1875  bool getDovoltol() const { return myDovoltol; }
1876  void setDovoltol(bool val) { myDovoltol = val; }
1877  bool opDovoltol(const SOP_NodeVerb::CookParms &cookparms) const
1878  {
1879  SOP_Node *thissop = cookparms.getNode();
1880  if (!thissop) return getDovoltol();
1881  bool result;
1882  OP_Utils::evalOpParm(result, thissop, "dovoltol", cookparms.getCookTime(), 0);
1883  return result;
1884  }
1885  fpreal64 getVoltol() const { return myVoltol; }
1886  void setVoltol(fpreal64 val) { myVoltol = val; }
1888  {
1889  SOP_Node *thissop = cookparms.getNode();
1890  if (!thissop) return getVoltol();
1891  fpreal64 result;
1892  OP_Utils::evalOpParm(result, thissop, "voltol", cookparms.getCookTime(), 0);
1893  return result;
1894  }
1895  bool getDovdbclass() const { return myDovdbclass; }
1896  void setDovdbclass(bool val) { myDovdbclass = val; }
1897  bool opDovdbclass(const SOP_NodeVerb::CookParms &cookparms) const
1898  {
1899  SOP_Node *thissop = cookparms.getNode();
1900  if (!thissop) return getDovdbclass();
1901  bool result;
1902  OP_Utils::evalOpParm(result, thissop, "dovdbclass", cookparms.getCookTime(), 0);
1903  return result;
1904  }
1905  int64 getVdbclass() const { return myVdbclass; }
1906  void setVdbclass(int64 val) { myVdbclass = val; }
1907  int64 opVdbclass(const SOP_NodeVerb::CookParms &cookparms) const
1908  {
1909  SOP_Node *thissop = cookparms.getNode();
1910  if (!thissop) return getVdbclass();
1911  int64 result;
1912  OP_Utils::evalOpParm(result, thissop, "vdbclass", cookparms.getCookTime(), 0);
1913  return result;
1914  }
1915  bool getDovdbcreator() const { return myDovdbcreator; }
1916  void setDovdbcreator(bool val) { myDovdbcreator = val; }
1917  bool opDovdbcreator(const SOP_NodeVerb::CookParms &cookparms) const
1918  {
1919  SOP_Node *thissop = cookparms.getNode();
1920  if (!thissop) return getDovdbcreator();
1921  bool result;
1922  OP_Utils::evalOpParm(result, thissop, "dovdbcreator", cookparms.getCookTime(), 0);
1923  return result;
1924  }
1925  const UT_StringHolder & getVdbcreator() const { return myVdbcreator; }
1926  void setVdbcreator(const UT_StringHolder & val) { myVdbcreator = val; }
1928  {
1929  SOP_Node *thissop = cookparms.getNode();
1930  if (!thissop) return getVdbcreator();
1932  OP_Utils::evalOpParm(result, thissop, "vdbcreator", cookparms.getCookTime(), 0);
1933  return result;
1934  }
1935  bool getDovdbtransform() const { return myDovdbtransform; }
1936  void setDovdbtransform(bool val) { myDovdbtransform = val; }
1937  bool opDovdbtransform(const SOP_NodeVerb::CookParms &cookparms) const
1938  {
1939  SOP_Node *thissop = cookparms.getNode();
1940  if (!thissop) return getDovdbtransform();
1941  bool result;
1942  OP_Utils::evalOpParm(result, thissop, "dovdbtransform", cookparms.getCookTime(), 0);
1943  return result;
1944  }
1945  bool getVdbtransform() const { return myVdbtransform; }
1946  void setVdbtransform(bool val) { myVdbtransform = val; }
1947  bool opVdbtransform(const SOP_NodeVerb::CookParms &cookparms) const
1948  {
1949  SOP_Node *thissop = cookparms.getNode();
1950  if (!thissop) return getVdbtransform();
1951  bool result;
1952  OP_Utils::evalOpParm(result, thissop, "vdbtransform", cookparms.getCookTime(), 0);
1953  return result;
1954  }
1955  bool getDovdbvectype() const { return myDovdbvectype; }
1956  void setDovdbvectype(bool val) { myDovdbvectype = val; }
1957  bool opDovdbvectype(const SOP_NodeVerb::CookParms &cookparms) const
1958  {
1959  SOP_Node *thissop = cookparms.getNode();
1960  if (!thissop) return getDovdbvectype();
1961  bool result;
1962  OP_Utils::evalOpParm(result, thissop, "dovdbvectype", cookparms.getCookTime(), 0);
1963  return result;
1964  }
1965  int64 getVdbvectype() const { return myVdbvectype; }
1966  void setVdbvectype(int64 val) { myVdbvectype = val; }
1968  {
1969  SOP_Node *thissop = cookparms.getNode();
1970  if (!thissop) return getVdbvectype();
1971  int64 result;
1972  OP_Utils::evalOpParm(result, thissop, "vdbvectype", cookparms.getCookTime(), 0);
1973  return result;
1974  }
1975  bool getDovdbhalf() const { return myDovdbhalf; }
1976  void setDovdbhalf(bool val) { myDovdbhalf = val; }
1977  bool opDovdbhalf(const SOP_NodeVerb::CookParms &cookparms) const
1978  {
1979  SOP_Node *thissop = cookparms.getNode();
1980  if (!thissop) return getDovdbhalf();
1981  bool result;
1982  OP_Utils::evalOpParm(result, thissop, "dovdbhalf", cookparms.getCookTime(), 0);
1983  return result;
1984  }
1985  bool getVdbhalf() const { return myVdbhalf; }
1986  void setVdbhalf(bool val) { myVdbhalf = val; }
1987  bool opVdbhalf(const SOP_NodeVerb::CookParms &cookparms) const
1988  {
1989  SOP_Node *thissop = cookparms.getNode();
1990  if (!thissop) return getVdbhalf();
1991  bool result;
1992  OP_Utils::evalOpParm(result, thissop, "vdbhalf", cookparms.getCookTime(), 0);
1993  return result;
1994  }
1995  const UT_StringHolder & getTemplategrp() const { return myTemplategrp; }
1996  void setTemplategrp(const UT_StringHolder & val) { myTemplategrp = val; }
1998  {
1999  SOP_Node *thissop = cookparms.getNode();
2000  if (!thissop) return getTemplategrp();
2002  OP_Utils::evalOpParm(result, thissop, "templateGrp", cookparms.getCookTime(), 0);
2003  return result;
2004  }
2005  bool getPshapeu() const { return myPshapeu; }
2006  void setPshapeu(bool val) { myPshapeu = val; }
2007  bool opPshapeu(const SOP_NodeVerb::CookParms &cookparms) const
2008  {
2009  SOP_Node *thissop = cookparms.getNode();
2010  if (!thissop) return getPshapeu();
2011  bool result;
2012  OP_Utils::evalOpParm(result, thissop, "pshapeu", cookparms.getCookTime(), 0);
2013  return result;
2014  }
2015  bool getPshapev() const { return myPshapev; }
2016  void setPshapev(bool val) { myPshapev = val; }
2017  bool opPshapev(const SOP_NodeVerb::CookParms &cookparms) const
2018  {
2019  SOP_Node *thissop = cookparms.getNode();
2020  if (!thissop) return getPshapev();
2021  bool result;
2022  OP_Utils::evalOpParm(result, thissop, "pshapev", cookparms.getCookTime(), 0);
2023  return result;
2024  }
2025 
2026 private:
2027  UT_StringHolder myGroup;
2028  bool myDoXform;
2029  int64 myDoRot;
2030  int64 myXord;
2031  int64 myRord;
2032  UT_Vector3D myT;
2033  UT_Vector3D myR;
2034  UT_Vector3D myS;
2035  UT_Vector3D myShear;
2036  UT_Vector3D myP;
2037  UT_Vector3D myPr;
2038  UT_StringHolder myLookatpath;
2039  UT_Vector3D myUpvector;
2040  UT_StringHolder myXformattribs;
2041  int64 myDoclr;
2042  UT_Vector3D myDiff;
2043  int64 myDoalpha;
2044  fpreal64 myAlpha;
2045  int64 myDocrease;
2046  fpreal64 myCrease;
2047  int64 myDotexture;
2048  UT_StringHolder myTexture;
2049  int64 myCloseu;
2050  int64 myClosev;
2051  int64 myClampu;
2052  int64 myClampv;
2053  int64 myVtxsort;
2054  int64 myVtxuoff;
2055  int64 myVtxvoff;
2056  bool myDoweight;
2057  fpreal64 myMetaweight;
2058  bool myDoprender;
2059  int64 myPrtype;
2060  fpreal64 myPrsize;
2061  fpreal64 myPrblur;
2062  bool myDovolvis;
2063  int64 myVolvis;
2064  fpreal64 myVolvisiso;
2065  fpreal64 myVolvisdensity;
2066  bool myDotaper;
2067  UT_Vector2D myTaper;
2068  bool myDovolume;
2069  int64 myVolborder;
2070  fpreal64 myVolborderval;
2071  bool myDovoltol;
2072  fpreal64 myVoltol;
2073  bool myDovdbclass;
2074  int64 myVdbclass;
2075  bool myDovdbcreator;
2076  UT_StringHolder myVdbcreator;
2077  bool myDovdbtransform;
2078  bool myVdbtransform;
2079  bool myDovdbvectype;
2080  int64 myVdbvectype;
2081  bool myDovdbhalf;
2082  bool myVdbhalf;
2083  UT_StringHolder myTemplategrp;
2084  bool myPshapeu;
2085  bool myPshapev;
2086 
2087 };
void setVolvisdensity(fpreal64 val)
ParmType getNestParmType(TempIndex fieldnum) const override
GLdouble s
Definition: glew.h:1390
Volborder opVolborder(const SOP_NodeVerb::CookParms &cookparms) const
Docrease getDocrease() const
UT_Vector3D getT() const
static void saveData(std::ostream &os, UT_Matrix2D v)
fpreal64 getAlpha() const
bool opDovdbclass(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getVolborderval() const
void setDovolume(bool val)
UT_Vector3D opDiff(const SOP_NodeVerb::CookParms &cookparms) const
void setDovdbcreator(bool val)
static void loadData(UT_IStream &is, UT_Vector3I &v)
exint nodeIdx() const
Definition: SOP_NodeVerb.h:114
bool opVdbhalf(const SOP_NodeVerb::CookParms &cookparms) const
void buildFromOp(const SOP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
GLenum src
Definition: glew.h:2410
Doclr opDoclr(const SOP_NodeVerb::CookParms &cookparms) const
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:640
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
static void loadData(UT_IStream &is, UT_StringHolder &v)
void setVtxvoff(int64 val)
fpreal64 getPrsize() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
static void loadData(UT_IStream &is, UT_Matrix3D &v)
static void saveData(std::ostream &os, int64 v)
void setP(UT_Vector3D val)
virtual NodeIdx getInput(NodeIdx idx, int input, bool markused=false) const =0
Vtxsort getVtxsort() const
exint bread(int32 *buffer, exint asize=1)
void setPrsize(fpreal64 val)
GT_API const UT_StringHolder time
fpreal64 getVoltol() const
UT_Vector3D getDiff() const
fpreal getTime() const
Definition: OP_Context.h:60
UT_Vector3D getP() const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
UT_Vector2T< fpreal64 > UT_Vector2D
GLuint const GLfloat * val
Definition: glew.h:2794
void setDoweight(bool val)
fpreal64 getVolvisiso() const
UT_StringHolder opVdbcreator(const SOP_NodeVerb::CookParms &cookparms) const
int64 opVdbclass(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix2D &v)
void setXformattribs(const UT_StringHolder &val)
Volvis getVolvis() const
fpreal64 getVolvisdensity() const
Closeu getCloseu() const
int64 getVdbvectype() const
Closeu opCloseu(const SOP_NodeVerb::CookParms &cookparms) const
int64 exint
Definition: SYS_Types.h:125
static void saveData(std::ostream &os, bool v)
SYS_FORCE_INLINE const char * buffer() const
void setDovoltol(bool val)
const SOP_GraphProxy * graph() const
Definition: SOP_NodeVerb.h:113
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
fpreal64 opCrease(const SOP_NodeVerb::CookParms &cookparms) const
bool operator!=(const SOP_PrimitiveParms &src) const
UT_StringHolder opXformattribs(const SOP_NodeVerb::CookParms &cookparms) const
An output stream object that owns its own string buffer storage.
UT_Vector2D opTaper(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
void setClampu(Clampu val)
static void loadData(UT_IStream &is, UT_Vector4D &v)
const GLdouble * v
Definition: glew.h:1391
static void loadData(UT_IStream &is, bool &v)
void setVdbvectype(int64 val)
void setVtxuoff(int64 val)
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
int64 opVtxvoff(const SOP_NodeVerb::CookParms &cookparms) const
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
void save(std::ostream &os) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
bool operator==(const SOP_PrimitiveParms &src) const
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
Closev opClosev(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D opP(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D getS() const
fpreal64 opVoltol(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
UT_StringHolder opLookatpath(const SOP_NodeVerb::CookParms &cookparms) const
bool opDovdbtransform(const SOP_NodeVerb::CookParms &cookparms) const
void setPr(UT_Vector3D val)
void setDovdbvectype(bool val)
bool opDovoltol(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D getShear() const
Prtype opPrtype(const SOP_NodeVerb::CookParms &cookparms) const
bool opDoweight(const SOP_NodeVerb::CookParms &cookparms) const
void setVdbcreator(const UT_StringHolder &val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
static void saveData(std::ostream &os, PRM_DataItemHandle s)
bool opPshapeu(const SOP_NodeVerb::CookParms &cookparms) const
void setS(UT_Vector3D val)
const UT_StringHolder & getTexture() const
bool getDovdbcreator() const
double fpreal64
Definition: SYS_Types.h:201
void setGroup(const UT_StringHolder &val)
void setCrease(fpreal64 val)
void setDoRot(DoRot val)
void setTaper(UT_Vector2D val)
static void loadData(UT_IStream &is, UT_Vector2I &v)
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
void setAlpha(fpreal64 val)
bool getDovdbtransform() const
Clampu getClampu() const
void setDovdbclass(bool val)
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
static void saveData(std::ostream &os, UT_Matrix3D v)
bool opDoprender(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, fpreal64 v)
static void loadData(UT_IStream &is, UT_Matrix4D &v)
SYS_FORCE_INLINE T & y()
Definition: UT_Vector3.h:513
void setT(UT_Vector3D val)
void setVolborderval(fpreal64 val)
void setMetaweight(fpreal64 val)
Prtype getPrtype() const
void setDoalpha(Doalpha val)
UT_Vector3D opUpvector(const SOP_NodeVerb::CookParms &cookparms) const
exint length() const
static void saveData(std::ostream &os, UT_StringHolder s)
static void loadData(UT_IStream &is, UT_Vector3D &v)
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:28
Volvis opVolvis(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D opT(const SOP_NodeVerb::CookParms &cookparms) const
GLint GLenum GLsizei GLint GLsizei const void * data
Definition: glew.h:1379
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
exint getNestNumParms(TempIndex idx) const override
static void loadData(UT_IStream &is, fpreal64 &v)
void setLookatpath(const UT_StringHolder &val)
const UT_StringHolder & getXformattribs() const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
SYS_FORCE_INLINE T & z()
Definition: UT_Vector3.h:515
Xord opXord(const SOP_NodeVerb::CookParms &cookparms) const
Docrease opDocrease(const SOP_NodeVerb::CookParms &cookparms) const
const GLfloat * c
Definition: glew.h:16296
void setDotexture(Dotexture val)
static void loadData(UT_IStream &is, UT_Vector2D &v)
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
long long int64
Definition: SYS_Types.h:116
UT_Vector3D getPr() const
bool getDovdbvectype() const
static void saveData(std::ostream &os, UT_Vector3D v)
UT_StringHolder opTexture(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
UT_Vector3T< fpreal64 > UT_Vector3D
void loadFromOpSubclass(const LoadParms &loadparms) override
bool opDovdbcreator(const SOP_NodeVerb::CookParms &cookparms) const
bool getVdbtransform() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
Closev getClosev() const
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
void copyFrom(const SOP_NodeParms *src) override
Rord opRord(const SOP_NodeVerb::CookParms &cookparms) const
void setCloseu(Closeu val)
UT_Vector3D opR(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
void setDovolvis(bool val)
fpreal64 opPrsize(const SOP_NodeVerb::CookParms &cookparms) const
void setVolvisiso(fpreal64 val)
static void saveData(std::ostream &os, UT_Matrix4D v)
static void saveData(std::ostream &os, UT_Vector4D v)
void setVolvis(Volvis val)
UT_Vector2D getTaper() const
int64 opVdbvectype(const SOP_NodeVerb::CookParms &cookparms) const
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:294
bool opDotaper(const SOP_NodeVerb::CookParms &cookparms) const
void setDiff(UT_Vector3D val)
bool opPshapev(const SOP_NodeVerb::CookParms &cookparms) const
void setDocrease(Docrease val)
GT_API const UT_StringHolder version
DEP_MicroNode * depnode() const
Definition: SOP_NodeVerb.h:121
bool opVdbtransform(const SOP_NodeVerb::CookParms &cookparms) const
void setR(UT_Vector3D val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
fpreal64 getPrblur() const
const char * getNestParmName(TempIndex fieldnum) const override
void setDovdbtransform(bool val)
void setShear(UT_Vector3D val)
void setVdbtransform(bool val)
fpreal64 opMetaweight(const SOP_NodeVerb::CookParms &cookparms) const
int64 opVtxuoff(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
void setDovdbhalf(bool val)
fpreal64 fpreal
Definition: SYS_Types.h:277
UT_Vector3D opS(const SOP_NodeVerb::CookParms &cookparms) const
void setUpvector(UT_Vector3D val)
Utility class for containing a color ramp.
Definition: UT_Ramp.h:84
Doalpha opDoalpha(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getMetaweight() const
fpreal64 opPrblur(const SOP_NodeVerb::CookParms &cookparms) const
GLdouble GLdouble GLdouble r
Definition: glew.h:1406
Clampv opClampv(const SOP_NodeVerb::CookParms &cookparms) const
bool load(UT_IStream &is)
#define SOP_API
Definition: SOP_API.h:10
void setVtxsort(Vtxsort val)
UT_Vector3D getR() const
UT_StringHolder opTemplategrp(const SOP_NodeVerb::CookParms &cookparms) const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
bool opDovolume(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE T & x()
Definition: UT_Vector3.h:511
fpreal64 opVolvisiso(const SOP_NodeVerb::CookParms &cookparms) const
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:654
UT_Vector3D getUpvector() const
GLuint64EXT * result
Definition: glew.h:14007
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
Clampv getClampv() const
const char * findChar(int c) const
Definition: UT_String.h:1367
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:135
static void saveData(std::ostream &os, UT_Vector2D v)
const UT_StringHolder & getTemplategrp() const
bool opDovolvis(const SOP_NodeVerb::CookParms &cookparms) const
void setVolborder(Volborder val)
UT_Vector3D opShear(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
void setTexture(const UT_StringHolder &val)
bool opDovdbvectype(const SOP_NodeVerb::CookParms &cookparms) const
Dotexture opDotexture(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D opPr(const SOP_NodeVerb::CookParms &cookparms) const
bool opDovdbhalf(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getLookatpath() const
Dotexture getDotexture() const
void setClosev(Closev val)
fpreal64 opVolvisdensity(const SOP_NodeVerb::CookParms &cookparms) const
Doalpha getDoalpha() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
const UT_StringHolder & getGroup() const
Volborder getVolborder() const
GLsizei const GLfloat * value
Definition: glew.h:1849
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
Vtxsort opVtxsort(const SOP_NodeVerb::CookParms &cookparms) const
void setDoprender(bool val)
void setPrblur(fpreal64 val)
void setPrtype(Prtype val)
const OP_Context & context() const
Definition: SOP_NodeVerb.h:119
static void loadData(UT_IStream &is, int64 &v)
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:89
fpreal64 getCrease() const
void setClampv(Clampv val)
int64 getVdbclass() const
fpreal64 opAlpha(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE bool isstring() const
void setVoltol(fpreal64 val)
Clampu opClampu(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
bool opDoXform(const SOP_NodeVerb::CookParms &cookparms) const
type
Definition: core.h:528
void setTemplategrp(const UT_StringHolder &val)
const UT_StringHolder & getVdbcreator() const
fpreal64 opVolborderval(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4I &v)
void setDoclr(Doclr val)
DoRot opDoRot(const SOP_NodeVerb::CookParms &cookparms) const
void setVdbclass(int64 val)