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