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 
33  getToken(DoRot enum_value)
34  {
35  using namespace UT::Literal;
36  switch (enum_value) {
37  case DoRot::OFF: return "off"_sh;
38  case DoRot::ON: return "on"_sh;
39  case DoRot::MATCH: return "match"_sh;
40  default: UT_ASSERT(false); return ""_sh;
41  }
42  }
43 
44  enum class Xord
45  {
46  SRT = 0,
47  STR,
48  RST,
49  RTS,
50  TSR,
51  TRS
52  };
53 
55  getToken(Xord enum_value)
56  {
57  using namespace UT::Literal;
58  switch (enum_value) {
59  case Xord::SRT: return "srt"_sh;
60  case Xord::STR: return "str"_sh;
61  case Xord::RST: return "rst"_sh;
62  case Xord::RTS: return "rts"_sh;
63  case Xord::TSR: return "tsr"_sh;
64  case Xord::TRS: return "trs"_sh;
65  default: UT_ASSERT(false); return ""_sh;
66  }
67  }
68 
69  enum class Rord
70  {
71  XYZ = 0,
72  XZY,
73  YXZ,
74  YZX,
75  ZXY,
76  ZYX
77  };
78 
80  getToken(Rord enum_value)
81  {
82  using namespace UT::Literal;
83  switch (enum_value) {
84  case Rord::XYZ: return "xyz"_sh;
85  case Rord::XZY: return "xzy"_sh;
86  case Rord::YXZ: return "yxz"_sh;
87  case Rord::YZX: return "yzx"_sh;
88  case Rord::ZXY: return "zxy"_sh;
89  case Rord::ZYX: return "zyx"_sh;
90  default: UT_ASSERT(false); return ""_sh;
91  }
92  }
93 
94  enum class Doclr
95  {
96  OFF = 0,
97  ON,
98  REMOVE
99  };
100 
102  getToken(Doclr enum_value)
103  {
104  using namespace UT::Literal;
105  switch (enum_value) {
106  case Doclr::OFF: return "off"_sh;
107  case Doclr::ON: return "on"_sh;
108  case Doclr::REMOVE: return "remove"_sh;
109  default: UT_ASSERT(false); return ""_sh;
110  }
111  }
112 
113  enum class Doalpha
114  {
115  OFF = 0,
116  ON,
117  REMOVE
118  };
119 
121  getToken(Doalpha enum_value)
122  {
123  using namespace UT::Literal;
124  switch (enum_value) {
125  case Doalpha::OFF: return "off"_sh;
126  case Doalpha::ON: return "on"_sh;
127  case Doalpha::REMOVE: return "remove"_sh;
128  default: UT_ASSERT(false); return ""_sh;
129  }
130  }
131 
132  enum class Docrease
133  {
134  OFF = 0,
135  ON,
136  REMOVE
137  };
138 
140  getToken(Docrease enum_value)
141  {
142  using namespace UT::Literal;
143  switch (enum_value) {
144  case Docrease::OFF: return "off"_sh;
145  case Docrease::ON: return "on"_sh;
146  case Docrease::REMOVE: return "remove"_sh;
147  default: UT_ASSERT(false); return ""_sh;
148  }
149  }
150 
151  enum class Dotexture
152  {
153  OFF = 0,
154  ON,
155  REMOVE
156  };
157 
159  getToken(Dotexture enum_value)
160  {
161  using namespace UT::Literal;
162  switch (enum_value) {
163  case Dotexture::OFF: return "off"_sh;
164  case Dotexture::ON: return "on"_sh;
165  case Dotexture::REMOVE: return "remove"_sh;
166  default: UT_ASSERT(false); return ""_sh;
167  }
168  }
169 
170  enum class Closeu
171  {
172  SAMECLOSURE = 0,
173  OPEN,
174  CLOSESHARP,
175  CLOSEROUND,
176  UNROLL,
178  };
179 
181  getToken(Closeu enum_value)
182  {
183  using namespace UT::Literal;
184  switch (enum_value) {
185  case Closeu::SAMECLOSURE: return "sameclosure"_sh;
186  case Closeu::OPEN: return "open"_sh;
187  case Closeu::CLOSESHARP: return "closesharp"_sh;
188  case Closeu::CLOSEROUND: return "closeround"_sh;
189  case Closeu::UNROLL: return "unroll"_sh;
190  case Closeu::UNROLLSHARED: return "unrollshared"_sh;
191  default: UT_ASSERT(false); return ""_sh;
192  }
193  }
194 
195  enum class Closev
196  {
197  SAMECLOSURE = 0,
198  OPEN,
199  CLOSESHARP,
200  CLOSEROUND,
201  UNROLL,
203  };
204 
206  getToken(Closev enum_value)
207  {
208  using namespace UT::Literal;
209  switch (enum_value) {
210  case Closev::SAMECLOSURE: return "sameclosure"_sh;
211  case Closev::OPEN: return "open"_sh;
212  case Closev::CLOSESHARP: return "closesharp"_sh;
213  case Closev::CLOSEROUND: return "closeround"_sh;
214  case Closev::UNROLL: return "unroll"_sh;
215  case Closev::UNROLLSHARED: return "unrollshared"_sh;
216  default: UT_ASSERT(false); return ""_sh;
217  }
218  }
219 
220  enum class Clampu
221  {
222  SAMECLAMP = 0,
223  CLAMP,
224  UNCLAMP
225  };
226 
228  getToken(Clampu enum_value)
229  {
230  using namespace UT::Literal;
231  switch (enum_value) {
232  case Clampu::SAMECLAMP: return "sameclamp"_sh;
233  case Clampu::CLAMP: return "clamp"_sh;
234  case Clampu::UNCLAMP: return "unclamp"_sh;
235  default: UT_ASSERT(false); return ""_sh;
236  }
237  }
238 
239  enum class Clampv
240  {
241  SAMECLAMP = 0,
242  CLAMP,
243  UNCLAMP
244  };
245 
247  getToken(Clampv enum_value)
248  {
249  using namespace UT::Literal;
250  switch (enum_value) {
251  case Clampv::SAMECLAMP: return "sameclamp"_sh;
252  case Clampv::CLAMP: return "clamp"_sh;
253  case Clampv::UNCLAMP: return "unclamp"_sh;
254  default: UT_ASSERT(false); return ""_sh;
255  }
256  }
257 
258  enum class Vtxsort
259  {
260  SAMEVERTEX = 0,
261  REVERSE,
262  REVERSEU,
263  REVERSEV,
264  SWAPUV,
265  SHIFT
266  };
267 
269  getToken(Vtxsort enum_value)
270  {
271  using namespace UT::Literal;
272  switch (enum_value) {
273  case Vtxsort::SAMEVERTEX: return "samevertex"_sh;
274  case Vtxsort::REVERSE: return "reverse"_sh;
275  case Vtxsort::REVERSEU: return "reverseu"_sh;
276  case Vtxsort::REVERSEV: return "reversev"_sh;
277  case Vtxsort::SWAPUV: return "swapuv"_sh;
278  case Vtxsort::SHIFT: return "shift"_sh;
279  default: UT_ASSERT(false); return ""_sh;
280  }
281  }
282 
283  enum class Prtype
284  {
285  SPHERE = 0,
286  CIRCLE,
287  LINE,
288  TUBE,
289  CAPPED,
290  ROUNDED
291  };
292 
294  getToken(Prtype enum_value)
295  {
296  using namespace UT::Literal;
297  switch (enum_value) {
298  case Prtype::SPHERE: return "sphere"_sh;
299  case Prtype::CIRCLE: return "circle"_sh;
300  case Prtype::LINE: return "line"_sh;
301  case Prtype::TUBE: return "tube"_sh;
302  case Prtype::CAPPED: return "capped"_sh;
303  case Prtype::ROUNDED: return "rounded"_sh;
304  default: UT_ASSERT(false); return ""_sh;
305  }
306  }
307 
308  enum class Volvis
309  {
310  SMOKE = 0,
311  RAINBOW,
312  ISO,
313  INVISIBLE,
314  HEIGHTFIELD,
315  IMAGE
316  };
317 
319  getToken(Volvis enum_value)
320  {
321  using namespace UT::Literal;
322  switch (enum_value) {
323  case Volvis::SMOKE: return "smoke"_sh;
324  case Volvis::RAINBOW: return "rainbow"_sh;
325  case Volvis::ISO: return "iso"_sh;
326  case Volvis::INVISIBLE: return "invisible"_sh;
327  case Volvis::HEIGHTFIELD: return "heightfield"_sh;
328  case Volvis::IMAGE: return "image"_sh;
329  default: UT_ASSERT(false); return ""_sh;
330  }
331  }
332 
333  enum class Volborder
334  {
335  CONSTANT = 0,
336  REPEAT,
337  STREAK,
338  SDF,
339  MIRROR
340  };
341 
343  getToken(Volborder enum_value)
344  {
345  using namespace UT::Literal;
346  switch (enum_value) {
347  case Volborder::CONSTANT: return "constant"_sh;
348  case Volborder::REPEAT: return "repeat"_sh;
349  case Volborder::STREAK: return "streak"_sh;
350  case Volborder::SDF: return "sdf"_sh;
351  case Volborder::MIRROR: return "mirror"_sh;
352  default: UT_ASSERT(false); return ""_sh;
353  }
354  }
355 
356  enum class Voltypeinfo
357  {
358  NONE = 0,
359  COLOR,
360  POSITION,
361  VECTOR,
362  NORMAL,
363  OFFSETNORMAL,
364  TEXTURECOORD,
365  ID,
366  MASK,
367  SDF,
368  HEIGHT
369  };
370 
372  getToken(Voltypeinfo enum_value)
373  {
374  using namespace UT::Literal;
375  switch (enum_value) {
376  case Voltypeinfo::NONE: return "none"_sh;
377  case Voltypeinfo::COLOR: return "color"_sh;
378  case Voltypeinfo::POSITION: return "position"_sh;
379  case Voltypeinfo::VECTOR: return "vector"_sh;
380  case Voltypeinfo::NORMAL: return "normal"_sh;
381  case Voltypeinfo::OFFSETNORMAL: return "offsetnormal"_sh;
382  case Voltypeinfo::TEXTURECOORD: return "texturecoord"_sh;
383  case Voltypeinfo::ID: return "id"_sh;
384  case Voltypeinfo::MASK: return "mask"_sh;
385  case Voltypeinfo::SDF: return "sdf"_sh;
386  case Voltypeinfo::HEIGHT: return "height"_sh;
387  default: UT_ASSERT(false); return ""_sh;
388  }
389  }
390 
391 }
392 
393 
395 {
396 public:
397  static int version() { return 1; }
398 
400  {
401  myGroup = ""_UTsh;
402  myDoXform = false;
403  myDoRot = 0;
404  myXord = 0;
405  myRord = 0;
406  myT = UT_Vector3D(0,0,0);
407  myR = UT_Vector3D(0,0,0);
408  myS = UT_Vector3D(1,1,1);
409  myShear = UT_Vector3D(0,0,0);
410  myP = UT_Vector3D(0,0,0);
411  myPr = UT_Vector3D(0,0,0);
412  myLookatpath = ""_UTsh;
413  myUpvector = UT_Vector3D(0,0,0);
414  myXformattribs = "N"_UTsh;
415  myDoclr = 0;
416  myDiff = UT_Vector3D(0,0,0);
417  myDoalpha = 0;
418  myAlpha = 0;
419  myDocrease = 0;
420  myCrease = 0;
421  myDotexture = 0;
422  myTexture = ""_UTsh;
423  myCloseu = 0;
424  myClosev = 0;
425  myClampu = 0;
426  myClampv = 0;
427  myVtxsort = 0;
428  myVtxuoff = 0;
429  myVtxvoff = 0;
430  myDoweight = false;
431  myMetaweight = 0;
432  myDoprender = false;
433  myPrtype = 0;
434  myPrsize = 0.05;
435  myPrblur = 0;
436  myDovolvis = false;
437  myVolvis = 0;
438  myVolvisiso = 0;
439  myVolvisdensity = 1;
440  myDotaper = false;
441  myTaper = UT_Vector2D(1,1);
442  myDovolume = false;
443  myVolborder = 0;
444  myVolborderval = 0;
445  myDovoltol = false;
446  myVoltol = 0;
447  myDovoltypeinfo = false;
448  myVoltypeinfo = 0;
449  myDovistile = false;
450  myVistile = 1;
451  myDovdbclass = false;
452  myVdbclass = 0;
453  myDovdbcreator = false;
454  myVdbcreator = ""_UTsh;
455  myDovdbtransform = false;
456  myVdbtransform = false;
457  myDovdbvectype = false;
458  myVdbvectype = 0;
459  myDovdbhalf = false;
460  myVdbhalf = false;
461  myTemplategrp = ""_UTsh;
462  myPshapeu = false;
463  myPshapev = false;
464 
465  }
466 
467  explicit SOP_PrimitiveParms(const SOP_PrimitiveParms &) = default;
468  SOP_PrimitiveParms &operator=(const SOP_PrimitiveParms &) = default;
469  SOP_PrimitiveParms(SOP_PrimitiveParms &&) noexcept = default;
470  SOP_PrimitiveParms &operator=(SOP_PrimitiveParms &&) noexcept = default;
471 
472  ~SOP_PrimitiveParms() override {}
473 
474  bool operator==(const SOP_PrimitiveParms &src) const
475  {
476  if (myGroup != src.myGroup) return false;
477  if (myDoXform != src.myDoXform) return false;
478  if (myDoRot != src.myDoRot) return false;
479  if (myXord != src.myXord) return false;
480  if (myRord != src.myRord) return false;
481  if (myT != src.myT) return false;
482  if (myR != src.myR) return false;
483  if (myS != src.myS) return false;
484  if (myShear != src.myShear) return false;
485  if (myP != src.myP) return false;
486  if (myPr != src.myPr) return false;
487  if (myLookatpath != src.myLookatpath) return false;
488  if (myUpvector != src.myUpvector) return false;
489  if (myXformattribs != src.myXformattribs) return false;
490  if (myDoclr != src.myDoclr) return false;
491  if (myDiff != src.myDiff) return false;
492  if (myDoalpha != src.myDoalpha) return false;
493  if (myAlpha != src.myAlpha) return false;
494  if (myDocrease != src.myDocrease) return false;
495  if (myCrease != src.myCrease) return false;
496  if (myDotexture != src.myDotexture) return false;
497  if (myTexture != src.myTexture) return false;
498  if (myCloseu != src.myCloseu) return false;
499  if (myClosev != src.myClosev) return false;
500  if (myClampu != src.myClampu) return false;
501  if (myClampv != src.myClampv) return false;
502  if (myVtxsort != src.myVtxsort) return false;
503  if (myVtxuoff != src.myVtxuoff) return false;
504  if (myVtxvoff != src.myVtxvoff) return false;
505  if (myDoweight != src.myDoweight) return false;
506  if (myMetaweight != src.myMetaweight) return false;
507  if (myDoprender != src.myDoprender) return false;
508  if (myPrtype != src.myPrtype) return false;
509  if (myPrsize != src.myPrsize) return false;
510  if (myPrblur != src.myPrblur) return false;
511  if (myDovolvis != src.myDovolvis) return false;
512  if (myVolvis != src.myVolvis) return false;
513  if (myVolvisiso != src.myVolvisiso) return false;
514  if (myVolvisdensity != src.myVolvisdensity) return false;
515  if (myDotaper != src.myDotaper) return false;
516  if (myTaper != src.myTaper) return false;
517  if (myDovolume != src.myDovolume) return false;
518  if (myVolborder != src.myVolborder) return false;
519  if (myVolborderval != src.myVolborderval) return false;
520  if (myDovoltol != src.myDovoltol) return false;
521  if (myVoltol != src.myVoltol) return false;
522  if (myDovoltypeinfo != src.myDovoltypeinfo) return false;
523  if (myVoltypeinfo != src.myVoltypeinfo) return false;
524  if (myDovistile != src.myDovistile) return false;
525  if (myVistile != src.myVistile) return false;
526  if (myDovdbclass != src.myDovdbclass) return false;
527  if (myVdbclass != src.myVdbclass) return false;
528  if (myDovdbcreator != src.myDovdbcreator) return false;
529  if (myVdbcreator != src.myVdbcreator) return false;
530  if (myDovdbtransform != src.myDovdbtransform) return false;
531  if (myVdbtransform != src.myVdbtransform) return false;
532  if (myDovdbvectype != src.myDovdbvectype) return false;
533  if (myVdbvectype != src.myVdbvectype) return false;
534  if (myDovdbhalf != src.myDovdbhalf) return false;
535  if (myVdbhalf != src.myVdbhalf) return false;
536  if (myTemplategrp != src.myTemplategrp) return false;
537  if (myPshapeu != src.myPshapeu) return false;
538  if (myPshapev != src.myPshapev) return false;
539 
540  return true;
541  }
542  bool operator!=(const SOP_PrimitiveParms &src) const
543  {
544  return !operator==(src);
545  }
562 
563 
564 
565  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
566  {
567  myGroup = ""_UTsh;
568  if (true)
569  graph->evalOpParm(myGroup, nodeidx, "group", time, 0);
570  myDoXform = false;
571  if (true)
572  graph->evalOpParm(myDoXform, nodeidx, "doxform", time, 0);
573  myDoRot = 0;
574  if (true && ( (true&&!((((graph->getInput(nodeidx,1)>=0)==0))||((getDoXform()==0)))) ) )
575  graph->evalOpParm(myDoRot, nodeidx, "dorot", time, 0);
576  myXord = 0;
577  if (true && ( (true&&!(((getDoXform()==0)))) ) )
578  graph->evalOpParm(myXord, nodeidx, "xOrd", time, 0);
579  myRord = 0;
580  if (true && ( (true&&!(((getDoXform()==0)))) ) )
581  graph->evalOpParm(myRord, nodeidx, "rOrd", time, 0);
582  myT = UT_Vector3D(0,0,0);
583  if (true && ( (true&&!(((getDoXform()==0)))) ) )
584  graph->evalOpParm(myT, nodeidx, "t", time, 0);
585  myR = UT_Vector3D(0,0,0);
586  if (true && ( (true&&!(((getDoXform()==0)))) ) )
587  graph->evalOpParm(myR, nodeidx, "r", time, 0);
588  myS = UT_Vector3D(1,1,1);
589  if (true && ( (true&&!(((getDoXform()==0)))) ) )
590  graph->evalOpParm(myS, nodeidx, "s", time, 0);
591  myShear = UT_Vector3D(0,0,0);
592  if (true && ( (true&&!(((getDoXform()==0)))) ) )
593  graph->evalOpParm(myShear, nodeidx, "shear", time, 0);
594  myP = UT_Vector3D(0,0,0);
595  if (true && ( (true&&!(((getDoXform()==0)))) ) )
596  graph->evalOpParm(myP, nodeidx, "p", time, 0);
597  myPr = UT_Vector3D(0,0,0);
598  if (true && ( (true&&!(((getDoXform()==0)))) ) )
599  graph->evalOpParm(myPr, nodeidx, "pr", time, 0);
600  myLookatpath = ""_UTsh;
601  if (true && ( (true&&!(((getDoXform()==0)))) ) )
602  graph->evalOpParm(myLookatpath, nodeidx, "lookatpath", time, 0);
603  myUpvector = UT_Vector3D(0,0,0);
604  if (true && ( (true&&!(((getDoXform()==0))||((getLookatpath()=="")))) ) )
605  graph->evalOpParm(myUpvector, nodeidx, "upvector", time, 0);
606  myXformattribs = "N"_UTsh;
607  if (true && ( (true&&!(((getDoXform()==0)))) ) )
608  graph->evalOpParm(myXformattribs, nodeidx, "xformattribs", time, 0);
609  myDoclr = 0;
610  if (true)
611  graph->evalOpParm(myDoclr, nodeidx, "doclr", time, 0);
612  myDiff = UT_Vector3D(0,0,0);
613  if (true && ( (true&&!(((int64(getDoclr())!=1)))) ) )
614  graph->evalOpParm(myDiff, nodeidx, "diff", time, 0);
615  myDoalpha = 0;
616  if (true)
617  graph->evalOpParm(myDoalpha, nodeidx, "doalpha", time, 0);
618  myAlpha = 0;
619  if (true && ( (true&&!(((int64(getDoalpha())!=1)))) ) )
620  graph->evalOpParm(myAlpha, nodeidx, "alpha", time, 0);
621  myDocrease = 0;
622  if (true)
623  graph->evalOpParm(myDocrease, nodeidx, "docrease", time, 0);
624  myCrease = 0;
625  if (true && ( (true&&!(((int64(getDocrease())!=1)))) ) )
626  graph->evalOpParm(myCrease, nodeidx, "crease", time, 0);
627  myDotexture = 0;
628  if (true)
629  graph->evalOpParm(myDotexture, nodeidx, "dotexture", time, 0);
630  myTexture = ""_UTsh;
631  if (true && ( (true&&!(((int64(getDotexture())!=1)))) ) )
632  graph->evalOpParm(myTexture, nodeidx, "texture", time, 0);
633  myCloseu = 0;
634  if (true)
635  graph->evalOpParm(myCloseu, nodeidx, "closeu", time, 0);
636  myClosev = 0;
637  if (true)
638  graph->evalOpParm(myClosev, nodeidx, "closev", time, 0);
639  myClampu = 0;
640  if (true)
641  graph->evalOpParm(myClampu, nodeidx, "clampu", time, 0);
642  myClampv = 0;
643  if (true)
644  graph->evalOpParm(myClampv, nodeidx, "clampv", time, 0);
645  myVtxsort = 0;
646  if (true)
647  graph->evalOpParm(myVtxsort, nodeidx, "vtxsort", time, 0);
648  myVtxuoff = 0;
649  if (true && ( (true&&!(((int64(getVtxsort())!=5)))) ) )
650  graph->evalOpParm(myVtxuoff, nodeidx, "vtxuoff", time, 0);
651  myVtxvoff = 0;
652  if (true && ( (true&&!(((int64(getVtxsort())!=5)))) ) )
653  graph->evalOpParm(myVtxvoff, nodeidx, "vtxvoff", time, 0);
654  myDoweight = false;
655  if (true)
656  graph->evalOpParm(myDoweight, nodeidx, "doweight", time, 0);
657  myMetaweight = 0;
658  if (true && ( (true&&!(((getDoweight()==0)))) ) )
659  graph->evalOpParm(myMetaweight, nodeidx, "metaweight", time, 0);
660  myDoprender = false;
661  if (true)
662  graph->evalOpParm(myDoprender, nodeidx, "doprender", time, 0);
663  myPrtype = 0;
664  if (true && ( (true&&!(((getDoprender()==0)))) ) )
665  graph->evalOpParm(myPrtype, nodeidx, "prtype", time, 0);
666  myPrsize = 0.05;
667  if (true && ( (true&&!(((getDoprender()==0)))) ) )
668  graph->evalOpParm(myPrsize, nodeidx, "prsize", time, 0);
669  myPrblur = 0;
670  if (true && ( (true&&!(((getDoprender()==0)))) ) )
671  graph->evalOpParm(myPrblur, nodeidx, "prblur", time, 0);
672  myDovolvis = false;
673  if (true)
674  graph->evalOpParm(myDovolvis, nodeidx, "dovolvis", time, 0);
675  myVolvis = 0;
676  if (true && ( (true&&!(((getDovolvis()==0)))) ) )
677  graph->evalOpParm(myVolvis, nodeidx, "volvis", time, 0);
678  myVolvisiso = 0;
679  if (true && ( (true&&!(((getDovolvis()==0)))) ) )
680  graph->evalOpParm(myVolvisiso, nodeidx, "volvisiso", time, 0);
681  myVolvisdensity = 1;
682  if (true && ( (true&&!(((getDovolvis()==0)))) ) )
683  graph->evalOpParm(myVolvisdensity, nodeidx, "volvisdensity", time, 0);
684  myDotaper = false;
685  if (true)
686  graph->evalOpParm(myDotaper, nodeidx, "dotaper", time, 0);
687  myTaper = UT_Vector2D(1,1);
688  if (true && ( (true&&!(((getDotaper()==0)))) ) )
689  graph->evalOpParm(myTaper, nodeidx, "taper", time, 0);
690  myDovolume = false;
691  if (true)
692  graph->evalOpParm(myDovolume, nodeidx, "dovolume", time, 0);
693  myVolborder = 0;
694  if (true && ( (true&&!(((getDovolume()==0)))) ) )
695  graph->evalOpParm(myVolborder, nodeidx, "volborder", time, 0);
696  myVolborderval = 0;
697  if (true && ( (true&&!(((getDovolume()==0)))) ) )
698  graph->evalOpParm(myVolborderval, nodeidx, "volborderval", time, 0);
699  myDovoltol = false;
700  if (true)
701  graph->evalOpParm(myDovoltol, nodeidx, "dovoltol", time, 0);
702  myVoltol = 0;
703  if (true && ( (true&&!(((getDovoltol()==0)))) ) )
704  graph->evalOpParm(myVoltol, nodeidx, "voltol", time, 0);
705  myDovoltypeinfo = false;
706  if (true)
707  graph->evalOpParm(myDovoltypeinfo, nodeidx, "dovoltypeinfo", time, 0);
708  myVoltypeinfo = 0;
709  if (true && ( (true&&!(((getDovoltypeinfo()==0)))) ) )
710  graph->evalOpParm(myVoltypeinfo, nodeidx, "voltypeinfo", time, 0);
711  myDovistile = false;
712  if (true)
713  graph->evalOpParm(myDovistile, nodeidx, "dovistile", time, 0);
714  myVistile = 1;
715  if (true && ( (true&&!(((getDovistile()==0)))) ) )
716  graph->evalOpParm(myVistile, nodeidx, "vistile", time, 0);
717  myDovdbclass = false;
718  if (true)
719  graph->evalOpParm(myDovdbclass, nodeidx, "dovdbclass", time, 0);
720  myVdbclass = 0;
721  if (true && ( (true&&!(((getDovdbclass()==0)))) ) )
722  graph->evalOpParm(myVdbclass, nodeidx, "vdbclass", time, 0);
723  myDovdbcreator = false;
724  if (true)
725  graph->evalOpParm(myDovdbcreator, nodeidx, "dovdbcreator", time, 0);
726  myVdbcreator = ""_UTsh;
727  if (true && ( (true&&!(((getDovdbcreator()==0)))) ) )
728  graph->evalOpParm(myVdbcreator, nodeidx, "vdbcreator", time, 0);
729  myDovdbtransform = false;
730  if (true)
731  graph->evalOpParm(myDovdbtransform, nodeidx, "dovdbtransform", time, 0);
732  myVdbtransform = false;
733  if (true && ( (true&&!(((getDovdbtransform()==0)))) ) )
734  graph->evalOpParm(myVdbtransform, nodeidx, "vdbtransform", time, 0);
735  myDovdbvectype = false;
736  if (true)
737  graph->evalOpParm(myDovdbvectype, nodeidx, "dovdbvectype", time, 0);
738  myVdbvectype = 0;
739  if (true && ( (true&&!(((getDovdbvectype()==0)))) ) )
740  graph->evalOpParm(myVdbvectype, nodeidx, "vdbvectype", time, 0);
741  myDovdbhalf = false;
742  if (true)
743  graph->evalOpParm(myDovdbhalf, nodeidx, "dovdbhalf", time, 0);
744  myVdbhalf = false;
745  if (true && ( (true&&!(((getDovdbhalf()==0)))) ) )
746  graph->evalOpParm(myVdbhalf, nodeidx, "vdbhalf", time, 0);
747  myTemplategrp = ""_UTsh;
748  if (true && ( (true&&!((((graph->getInput(nodeidx,1)>=0)==0))||((getDoXform()==0)))) ) )
749  graph->evalOpParm(myTemplategrp, nodeidx, "templateGrp", time, 0);
750  myPshapeu = false;
751  if (true && ( (true&&!(((int64(getCloseu())==0)&&(int64(getClampu())==0)))) ) )
752  graph->evalOpParm(myPshapeu, nodeidx, "pshapeu", time, 0);
753  myPshapev = false;
754  if (true && ( (true&&!(((int64(getClosev())==0)&&(int64(getClampv())==0)))) ) )
755  graph->evalOpParm(myPshapev, nodeidx, "pshapev", time, 0);
756 
757  }
758 
759 
760  void loadFromOpSubclass(const LoadParms &loadparms) override
761  {
762  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
763  }
764 
765 
766  void copyFrom(const OP_NodeParms *src) override
767  {
768  *this = *((const SOP_PrimitiveParms *)src);
769  }
770 
771  template <typename T>
772  void
773  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
774  {
775  if (idx.size() < 1)
776  return;
777  UT_ASSERT(idx.size() == instance.size()+1);
778  if (idx.size() != instance.size()+1)
779  return;
780  switch (idx[0])
781  {
782  case 0:
783  coerceValue(value, myGroup);
784  break;
785  case 1:
786  coerceValue(value, myDoXform);
787  break;
788  case 2:
789  coerceValue(value, myDoRot);
790  break;
791  case 3:
792  coerceValue(value, myXord);
793  break;
794  case 4:
795  coerceValue(value, myRord);
796  break;
797  case 5:
798  coerceValue(value, myT);
799  break;
800  case 6:
801  coerceValue(value, myR);
802  break;
803  case 7:
804  coerceValue(value, myS);
805  break;
806  case 8:
807  coerceValue(value, myShear);
808  break;
809  case 9:
810  coerceValue(value, myP);
811  break;
812  case 10:
813  coerceValue(value, myPr);
814  break;
815  case 11:
816  coerceValue(value, myLookatpath);
817  break;
818  case 12:
819  coerceValue(value, myUpvector);
820  break;
821  case 13:
822  coerceValue(value, myXformattribs);
823  break;
824  case 14:
825  coerceValue(value, myDoclr);
826  break;
827  case 15:
828  coerceValue(value, myDiff);
829  break;
830  case 16:
831  coerceValue(value, myDoalpha);
832  break;
833  case 17:
834  coerceValue(value, myAlpha);
835  break;
836  case 18:
837  coerceValue(value, myDocrease);
838  break;
839  case 19:
840  coerceValue(value, myCrease);
841  break;
842  case 20:
843  coerceValue(value, myDotexture);
844  break;
845  case 21:
846  coerceValue(value, myTexture);
847  break;
848  case 22:
849  coerceValue(value, myCloseu);
850  break;
851  case 23:
852  coerceValue(value, myClosev);
853  break;
854  case 24:
855  coerceValue(value, myClampu);
856  break;
857  case 25:
858  coerceValue(value, myClampv);
859  break;
860  case 26:
861  coerceValue(value, myVtxsort);
862  break;
863  case 27:
864  coerceValue(value, myVtxuoff);
865  break;
866  case 28:
867  coerceValue(value, myVtxvoff);
868  break;
869  case 29:
870  coerceValue(value, myDoweight);
871  break;
872  case 30:
873  coerceValue(value, myMetaweight);
874  break;
875  case 31:
876  coerceValue(value, myDoprender);
877  break;
878  case 32:
879  coerceValue(value, myPrtype);
880  break;
881  case 33:
882  coerceValue(value, myPrsize);
883  break;
884  case 34:
885  coerceValue(value, myPrblur);
886  break;
887  case 35:
888  coerceValue(value, myDovolvis);
889  break;
890  case 36:
891  coerceValue(value, myVolvis);
892  break;
893  case 37:
894  coerceValue(value, myVolvisiso);
895  break;
896  case 38:
897  coerceValue(value, myVolvisdensity);
898  break;
899  case 39:
900  coerceValue(value, myDotaper);
901  break;
902  case 40:
903  coerceValue(value, myTaper);
904  break;
905  case 41:
906  coerceValue(value, myDovolume);
907  break;
908  case 42:
909  coerceValue(value, myVolborder);
910  break;
911  case 43:
912  coerceValue(value, myVolborderval);
913  break;
914  case 44:
915  coerceValue(value, myDovoltol);
916  break;
917  case 45:
918  coerceValue(value, myVoltol);
919  break;
920  case 46:
921  coerceValue(value, myDovoltypeinfo);
922  break;
923  case 47:
924  coerceValue(value, myVoltypeinfo);
925  break;
926  case 48:
927  coerceValue(value, myDovistile);
928  break;
929  case 49:
930  coerceValue(value, myVistile);
931  break;
932  case 50:
933  coerceValue(value, myDovdbclass);
934  break;
935  case 51:
936  coerceValue(value, myVdbclass);
937  break;
938  case 52:
939  coerceValue(value, myDovdbcreator);
940  break;
941  case 53:
942  coerceValue(value, myVdbcreator);
943  break;
944  case 54:
945  coerceValue(value, myDovdbtransform);
946  break;
947  case 55:
948  coerceValue(value, myVdbtransform);
949  break;
950  case 56:
951  coerceValue(value, myDovdbvectype);
952  break;
953  case 57:
954  coerceValue(value, myVdbvectype);
955  break;
956  case 58:
957  coerceValue(value, myDovdbhalf);
958  break;
959  case 59:
960  coerceValue(value, myVdbhalf);
961  break;
962  case 60:
963  coerceValue(value, myTemplategrp);
964  break;
965  case 61:
966  coerceValue(value, myPshapeu);
967  break;
968  case 62:
969  coerceValue(value, myPshapev);
970  break;
971 
972  }
973  }
974 
975  bool isParmColorRamp(exint idx) const override
976  {
977  switch (idx)
978  {
979 
980  }
981  return false;
982  }
983 
984  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
985  { doGetParmValue(idx, instance, value); }
986  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
987  { doGetParmValue(idx, instance, value); }
988  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
989  { doGetParmValue(idx, instance, value); }
990  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
991  { doGetParmValue(idx, instance, value); }
992  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
993  { doGetParmValue(idx, instance, value); }
994  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
995  { doGetParmValue(idx, instance, value); }
996  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
997  { doGetParmValue(idx, instance, value); }
998  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
999  { doGetParmValue(idx, instance, value); }
1000  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
1001  { doGetParmValue(idx, instance, value); }
1002  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
1003  { doGetParmValue(idx, instance, value); }
1004  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
1005  { doGetParmValue(idx, instance, value); }
1006 
1007  template <typename T>
1008  void
1009  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
1010  {
1011  if (idx.size() < 1)
1012  return;
1013  UT_ASSERT(idx.size() == instance.size()+1);
1014  if (idx.size() != instance.size()+1)
1015  return;
1016  switch (idx[0])
1017  {
1018  case 0:
1019  coerceValue(myGroup, ( ( value ) ));
1020  break;
1021  case 1:
1022  coerceValue(myDoXform, ( ( value ) ));
1023  break;
1024  case 2:
1025  coerceValue(myDoRot, clampMinValue(0, clampMaxValue(2, value ) ));
1026  break;
1027  case 3:
1028  coerceValue(myXord, clampMinValue(0, clampMaxValue(5, value ) ));
1029  break;
1030  case 4:
1031  coerceValue(myRord, clampMinValue(0, clampMaxValue(5, value ) ));
1032  break;
1033  case 5:
1034  coerceValue(myT, ( ( value ) ));
1035  break;
1036  case 6:
1037  coerceValue(myR, ( ( value ) ));
1038  break;
1039  case 7:
1040  coerceValue(myS, ( ( value ) ));
1041  break;
1042  case 8:
1043  coerceValue(myShear, ( ( value ) ));
1044  break;
1045  case 9:
1046  coerceValue(myP, ( ( value ) ));
1047  break;
1048  case 10:
1049  coerceValue(myPr, ( ( value ) ));
1050  break;
1051  case 11:
1052  coerceValue(myLookatpath, ( ( value ) ));
1053  break;
1054  case 12:
1055  coerceValue(myUpvector, ( ( value ) ));
1056  break;
1057  case 13:
1058  coerceValue(myXformattribs, ( ( value ) ));
1059  break;
1060  case 14:
1061  coerceValue(myDoclr, clampMinValue(0, clampMaxValue(2, value ) ));
1062  break;
1063  case 15:
1064  coerceValue(myDiff, ( ( value ) ));
1065  break;
1066  case 16:
1067  coerceValue(myDoalpha, clampMinValue(0, clampMaxValue(2, value ) ));
1068  break;
1069  case 17:
1070  coerceValue(myAlpha, ( ( value ) ));
1071  break;
1072  case 18:
1073  coerceValue(myDocrease, clampMinValue(0, clampMaxValue(2, value ) ));
1074  break;
1075  case 19:
1076  coerceValue(myCrease, ( ( value ) ));
1077  break;
1078  case 20:
1079  coerceValue(myDotexture, clampMinValue(0, clampMaxValue(2, value ) ));
1080  break;
1081  case 21:
1082  coerceValue(myTexture, ( ( value ) ));
1083  break;
1084  case 22:
1085  coerceValue(myCloseu, clampMinValue(0, clampMaxValue(5, value ) ));
1086  break;
1087  case 23:
1088  coerceValue(myClosev, clampMinValue(0, clampMaxValue(5, value ) ));
1089  break;
1090  case 24:
1091  coerceValue(myClampu, clampMinValue(0, clampMaxValue(2, value ) ));
1092  break;
1093  case 25:
1094  coerceValue(myClampv, clampMinValue(0, clampMaxValue(2, value ) ));
1095  break;
1096  case 26:
1097  coerceValue(myVtxsort, clampMinValue(0, clampMaxValue(5, value ) ));
1098  break;
1099  case 27:
1100  coerceValue(myVtxuoff, ( ( value ) ));
1101  break;
1102  case 28:
1103  coerceValue(myVtxvoff, ( ( value ) ));
1104  break;
1105  case 29:
1106  coerceValue(myDoweight, ( ( value ) ));
1107  break;
1108  case 30:
1109  coerceValue(myMetaweight, ( ( value ) ));
1110  break;
1111  case 31:
1112  coerceValue(myDoprender, ( ( value ) ));
1113  break;
1114  case 32:
1115  coerceValue(myPrtype, clampMinValue(0, clampMaxValue(5, value ) ));
1116  break;
1117  case 33:
1118  coerceValue(myPrsize, ( ( value ) ));
1119  break;
1120  case 34:
1121  coerceValue(myPrblur, ( ( value ) ));
1122  break;
1123  case 35:
1124  coerceValue(myDovolvis, ( ( value ) ));
1125  break;
1126  case 36:
1127  coerceValue(myVolvis, clampMinValue(0, clampMaxValue(5, value ) ));
1128  break;
1129  case 37:
1130  coerceValue(myVolvisiso, ( ( value ) ));
1131  break;
1132  case 38:
1133  coerceValue(myVolvisdensity, ( ( value ) ));
1134  break;
1135  case 39:
1136  coerceValue(myDotaper, ( ( value ) ));
1137  break;
1138  case 40:
1139  coerceValue(myTaper, ( ( value ) ));
1140  break;
1141  case 41:
1142  coerceValue(myDovolume, ( ( value ) ));
1143  break;
1144  case 42:
1145  coerceValue(myVolborder, clampMinValue(0, clampMaxValue(4, value ) ));
1146  break;
1147  case 43:
1148  coerceValue(myVolborderval, ( ( value ) ));
1149  break;
1150  case 44:
1151  coerceValue(myDovoltol, ( ( value ) ));
1152  break;
1153  case 45:
1154  coerceValue(myVoltol, ( ( value ) ));
1155  break;
1156  case 46:
1157  coerceValue(myDovoltypeinfo, ( ( value ) ));
1158  break;
1159  case 47:
1160  coerceValue(myVoltypeinfo, clampMinValue(0, clampMaxValue(10, value ) ));
1161  break;
1162  case 48:
1163  coerceValue(myDovistile, ( ( value ) ));
1164  break;
1165  case 49:
1166  coerceValue(myVistile, ( ( value ) ));
1167  break;
1168  case 50:
1169  coerceValue(myDovdbclass, ( ( value ) ));
1170  break;
1171  case 51:
1172  coerceValue(myVdbclass, ( ( value ) ));
1173  break;
1174  case 52:
1175  coerceValue(myDovdbcreator, ( ( value ) ));
1176  break;
1177  case 53:
1178  coerceValue(myVdbcreator, ( ( value ) ));
1179  break;
1180  case 54:
1181  coerceValue(myDovdbtransform, ( ( value ) ));
1182  break;
1183  case 55:
1184  coerceValue(myVdbtransform, ( ( value ) ));
1185  break;
1186  case 56:
1187  coerceValue(myDovdbvectype, ( ( value ) ));
1188  break;
1189  case 57:
1190  coerceValue(myVdbvectype, ( ( value ) ));
1191  break;
1192  case 58:
1193  coerceValue(myDovdbhalf, ( ( value ) ));
1194  break;
1195  case 59:
1196  coerceValue(myVdbhalf, ( ( value ) ));
1197  break;
1198  case 60:
1199  coerceValue(myTemplategrp, ( ( value ) ));
1200  break;
1201  case 61:
1202  coerceValue(myPshapeu, ( ( value ) ));
1203  break;
1204  case 62:
1205  coerceValue(myPshapev, ( ( value ) ));
1206  break;
1207 
1208  }
1209  }
1210 
1211  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
1212  { doSetParmValue(idx, instance, value); }
1213  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
1214  { doSetParmValue(idx, instance, value); }
1215  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
1216  { doSetParmValue(idx, instance, value); }
1217  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
1218  { doSetParmValue(idx, instance, value); }
1219  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
1220  { doSetParmValue(idx, instance, value); }
1221  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
1222  { doSetParmValue(idx, instance, value); }
1223  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
1224  { doSetParmValue(idx, instance, value); }
1225  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
1226  { doSetParmValue(idx, instance, value); }
1227  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
1228  { doSetParmValue(idx, instance, value); }
1229  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
1230  { doSetParmValue(idx, instance, value); }
1231  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
1232  { doSetParmValue(idx, instance, value); }
1233 
1234  exint getNestNumParms(TempIndex idx) const override
1235  {
1236  if (idx.size() == 0)
1237  return 63;
1238  switch (idx[0])
1239  {
1240 
1241  }
1242  // Invalid
1243  return 0;
1244  }
1245 
1246  const char *getNestParmName(TempIndex fieldnum) const override
1247  {
1248  if (fieldnum.size() < 1)
1249  return 0;
1250  switch (fieldnum[0])
1251  {
1252  case 0:
1253  return "group";
1254  case 1:
1255  return "doxform";
1256  case 2:
1257  return "dorot";
1258  case 3:
1259  return "xOrd";
1260  case 4:
1261  return "rOrd";
1262  case 5:
1263  return "t";
1264  case 6:
1265  return "r";
1266  case 7:
1267  return "s";
1268  case 8:
1269  return "shear";
1270  case 9:
1271  return "p";
1272  case 10:
1273  return "pr";
1274  case 11:
1275  return "lookatpath";
1276  case 12:
1277  return "upvector";
1278  case 13:
1279  return "xformattribs";
1280  case 14:
1281  return "doclr";
1282  case 15:
1283  return "diff";
1284  case 16:
1285  return "doalpha";
1286  case 17:
1287  return "alpha";
1288  case 18:
1289  return "docrease";
1290  case 19:
1291  return "crease";
1292  case 20:
1293  return "dotexture";
1294  case 21:
1295  return "texture";
1296  case 22:
1297  return "closeu";
1298  case 23:
1299  return "closev";
1300  case 24:
1301  return "clampu";
1302  case 25:
1303  return "clampv";
1304  case 26:
1305  return "vtxsort";
1306  case 27:
1307  return "vtxuoff";
1308  case 28:
1309  return "vtxvoff";
1310  case 29:
1311  return "doweight";
1312  case 30:
1313  return "metaweight";
1314  case 31:
1315  return "doprender";
1316  case 32:
1317  return "prtype";
1318  case 33:
1319  return "prsize";
1320  case 34:
1321  return "prblur";
1322  case 35:
1323  return "dovolvis";
1324  case 36:
1325  return "volvis";
1326  case 37:
1327  return "volvisiso";
1328  case 38:
1329  return "volvisdensity";
1330  case 39:
1331  return "dotaper";
1332  case 40:
1333  return "taper";
1334  case 41:
1335  return "dovolume";
1336  case 42:
1337  return "volborder";
1338  case 43:
1339  return "volborderval";
1340  case 44:
1341  return "dovoltol";
1342  case 45:
1343  return "voltol";
1344  case 46:
1345  return "dovoltypeinfo";
1346  case 47:
1347  return "voltypeinfo";
1348  case 48:
1349  return "dovistile";
1350  case 49:
1351  return "vistile";
1352  case 50:
1353  return "dovdbclass";
1354  case 51:
1355  return "vdbclass";
1356  case 52:
1357  return "dovdbcreator";
1358  case 53:
1359  return "vdbcreator";
1360  case 54:
1361  return "dovdbtransform";
1362  case 55:
1363  return "vdbtransform";
1364  case 56:
1365  return "dovdbvectype";
1366  case 57:
1367  return "vdbvectype";
1368  case 58:
1369  return "dovdbhalf";
1370  case 59:
1371  return "vdbhalf";
1372  case 60:
1373  return "templateGrp";
1374  case 61:
1375  return "pshapeu";
1376  case 62:
1377  return "pshapev";
1378 
1379  }
1380  return 0;
1381  }
1382 
1383  ParmType getNestParmType(TempIndex fieldnum) const override
1384  {
1385  if (fieldnum.size() < 1)
1386  return PARM_UNSUPPORTED;
1387  switch (fieldnum[0])
1388  {
1389  case 0:
1390  return PARM_STRING;
1391  case 1:
1392  return PARM_INTEGER;
1393  case 2:
1394  return PARM_INTEGER;
1395  case 3:
1396  return PARM_INTEGER;
1397  case 4:
1398  return PARM_INTEGER;
1399  case 5:
1400  return PARM_VECTOR3;
1401  case 6:
1402  return PARM_VECTOR3;
1403  case 7:
1404  return PARM_VECTOR3;
1405  case 8:
1406  return PARM_VECTOR3;
1407  case 9:
1408  return PARM_VECTOR3;
1409  case 10:
1410  return PARM_VECTOR3;
1411  case 11:
1412  return PARM_STRING;
1413  case 12:
1414  return PARM_VECTOR3;
1415  case 13:
1416  return PARM_STRING;
1417  case 14:
1418  return PARM_INTEGER;
1419  case 15:
1420  return PARM_VECTOR3;
1421  case 16:
1422  return PARM_INTEGER;
1423  case 17:
1424  return PARM_FLOAT;
1425  case 18:
1426  return PARM_INTEGER;
1427  case 19:
1428  return PARM_FLOAT;
1429  case 20:
1430  return PARM_INTEGER;
1431  case 21:
1432  return PARM_STRING;
1433  case 22:
1434  return PARM_INTEGER;
1435  case 23:
1436  return PARM_INTEGER;
1437  case 24:
1438  return PARM_INTEGER;
1439  case 25:
1440  return PARM_INTEGER;
1441  case 26:
1442  return PARM_INTEGER;
1443  case 27:
1444  return PARM_INTEGER;
1445  case 28:
1446  return PARM_INTEGER;
1447  case 29:
1448  return PARM_INTEGER;
1449  case 30:
1450  return PARM_FLOAT;
1451  case 31:
1452  return PARM_INTEGER;
1453  case 32:
1454  return PARM_INTEGER;
1455  case 33:
1456  return PARM_FLOAT;
1457  case 34:
1458  return PARM_FLOAT;
1459  case 35:
1460  return PARM_INTEGER;
1461  case 36:
1462  return PARM_INTEGER;
1463  case 37:
1464  return PARM_FLOAT;
1465  case 38:
1466  return PARM_FLOAT;
1467  case 39:
1468  return PARM_INTEGER;
1469  case 40:
1470  return PARM_VECTOR2;
1471  case 41:
1472  return PARM_INTEGER;
1473  case 42:
1474  return PARM_INTEGER;
1475  case 43:
1476  return PARM_FLOAT;
1477  case 44:
1478  return PARM_INTEGER;
1479  case 45:
1480  return PARM_FLOAT;
1481  case 46:
1482  return PARM_INTEGER;
1483  case 47:
1484  return PARM_INTEGER;
1485  case 48:
1486  return PARM_INTEGER;
1487  case 49:
1488  return PARM_FLOAT;
1489  case 50:
1490  return PARM_INTEGER;
1491  case 51:
1492  return PARM_INTEGER;
1493  case 52:
1494  return PARM_INTEGER;
1495  case 53:
1496  return PARM_STRING;
1497  case 54:
1498  return PARM_INTEGER;
1499  case 55:
1500  return PARM_INTEGER;
1501  case 56:
1502  return PARM_INTEGER;
1503  case 57:
1504  return PARM_INTEGER;
1505  case 58:
1506  return PARM_INTEGER;
1507  case 59:
1508  return PARM_INTEGER;
1509  case 60:
1510  return PARM_STRING;
1511  case 61:
1512  return PARM_INTEGER;
1513  case 62:
1514  return PARM_INTEGER;
1515 
1516  }
1517  return PARM_UNSUPPORTED;
1518  }
1519 
1520  // Boiler plate to load individual types.
1521  static void loadData(UT_IStream &is, int64 &v)
1522  { is.bread(&v, 1); }
1523  static void loadData(UT_IStream &is, bool &v)
1524  { int64 iv; is.bread(&iv, 1); v = iv; }
1525  static void loadData(UT_IStream &is, fpreal64 &v)
1526  { is.bread<fpreal64>(&v, 1); }
1527  static void loadData(UT_IStream &is, UT_Vector2D &v)
1528  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
1529  static void loadData(UT_IStream &is, UT_Vector3D &v)
1530  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1531  is.bread<fpreal64>(&v.z(), 1); }
1532  static void loadData(UT_IStream &is, UT_Vector4D &v)
1533  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
1534  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
1535  static void loadData(UT_IStream &is, UT_Matrix2D &v)
1536  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
1537  static void loadData(UT_IStream &is, UT_Matrix3D &v)
1538  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
1539  static void loadData(UT_IStream &is, UT_Matrix4D &v)
1540  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
1541  static void loadData(UT_IStream &is, UT_Vector2I &v)
1542  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
1543  static void loadData(UT_IStream &is, UT_Vector3I &v)
1544  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1545  is.bread<int64>(&v.z(), 1); }
1546  static void loadData(UT_IStream &is, UT_Vector4I &v)
1547  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
1548  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
1550  { is.bread(v); }
1552  { UT_StringHolder rampdata;
1553  loadData(is, rampdata);
1554  if (rampdata.isstring())
1555  {
1556  v.reset(new UT_Ramp());
1557  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
1558  v->load(istr);
1559  }
1560  else v.reset();
1561  }
1564  loadData(is, data);
1565  if (data.isstring())
1566  {
1567  // Find the data type.
1568  const char *colon = UT_StringWrap(data).findChar(':');
1569  if (colon)
1570  {
1571  int typelen = colon - data.buffer();
1573  type.strncpy(data.buffer(), typelen);
1574  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
1575 
1576  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
1577  }
1578  }
1579  else v.reset();
1580  }
1581 
1582  static void saveData(std::ostream &os, int64 v)
1583  { UTwrite(os, &v); }
1584  static void saveData(std::ostream &os, bool v)
1585  { int64 iv = v; UTwrite(os, &iv); }
1586  static void saveData(std::ostream &os, fpreal64 v)
1587  { UTwrite<fpreal64>(os, &v); }
1588  static void saveData(std::ostream &os, UT_Vector2D v)
1589  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
1590  static void saveData(std::ostream &os, UT_Vector3D v)
1591  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1592  UTwrite<fpreal64>(os, &v.z()); }
1593  static void saveData(std::ostream &os, UT_Vector4D v)
1594  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
1595  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
1596  static void saveData(std::ostream &os, UT_Matrix2D v)
1598  static void saveData(std::ostream &os, UT_Matrix3D v)
1600  static void saveData(std::ostream &os, UT_Matrix4D v)
1602  static void saveData(std::ostream &os, UT_StringHolder s)
1603  { UT_StringWrap(s).saveBinary(os); }
1604  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
1606  UT_OStringStream ostr;
1607  if (s) s->save(ostr);
1608  result = ostr.str();
1609  saveData(os, result);
1610  }
1611  static void saveData(std::ostream &os, PRM_DataItemHandle s)
1613  UT_OStringStream ostr;
1614  if (s)
1615  {
1616  ostr << s->getDataTypeToken();
1617  ostr << ":";
1618  s->saveBinary(ostr);
1619  }
1620  result = ostr.str();
1621  saveData(os, result);
1622  }
1623 
1624 
1625  void save(std::ostream &os) const
1626  {
1627  int32 v = version();
1628  UTwrite(os, &v);
1629  saveData(os, myGroup);
1630  saveData(os, myDoXform);
1631  saveData(os, myDoRot);
1632  saveData(os, myXord);
1633  saveData(os, myRord);
1634  saveData(os, myT);
1635  saveData(os, myR);
1636  saveData(os, myS);
1637  saveData(os, myShear);
1638  saveData(os, myP);
1639  saveData(os, myPr);
1640  saveData(os, myLookatpath);
1641  saveData(os, myUpvector);
1642  saveData(os, myXformattribs);
1643  saveData(os, myDoclr);
1644  saveData(os, myDiff);
1645  saveData(os, myDoalpha);
1646  saveData(os, myAlpha);
1647  saveData(os, myDocrease);
1648  saveData(os, myCrease);
1649  saveData(os, myDotexture);
1650  saveData(os, myTexture);
1651  saveData(os, myCloseu);
1652  saveData(os, myClosev);
1653  saveData(os, myClampu);
1654  saveData(os, myClampv);
1655  saveData(os, myVtxsort);
1656  saveData(os, myVtxuoff);
1657  saveData(os, myVtxvoff);
1658  saveData(os, myDoweight);
1659  saveData(os, myMetaweight);
1660  saveData(os, myDoprender);
1661  saveData(os, myPrtype);
1662  saveData(os, myPrsize);
1663  saveData(os, myPrblur);
1664  saveData(os, myDovolvis);
1665  saveData(os, myVolvis);
1666  saveData(os, myVolvisiso);
1667  saveData(os, myVolvisdensity);
1668  saveData(os, myDotaper);
1669  saveData(os, myTaper);
1670  saveData(os, myDovolume);
1671  saveData(os, myVolborder);
1672  saveData(os, myVolborderval);
1673  saveData(os, myDovoltol);
1674  saveData(os, myVoltol);
1675  saveData(os, myDovoltypeinfo);
1676  saveData(os, myVoltypeinfo);
1677  saveData(os, myDovistile);
1678  saveData(os, myVistile);
1679  saveData(os, myDovdbclass);
1680  saveData(os, myVdbclass);
1681  saveData(os, myDovdbcreator);
1682  saveData(os, myVdbcreator);
1683  saveData(os, myDovdbtransform);
1684  saveData(os, myVdbtransform);
1685  saveData(os, myDovdbvectype);
1686  saveData(os, myVdbvectype);
1687  saveData(os, myDovdbhalf);
1688  saveData(os, myVdbhalf);
1689  saveData(os, myTemplategrp);
1690  saveData(os, myPshapeu);
1691  saveData(os, myPshapev);
1692 
1693  }
1694 
1695  bool load(UT_IStream &is)
1696  {
1697  int32 v;
1698  is.bread(&v, 1);
1699  if (version() != v)
1700  {
1701  // Fail incompatible versions
1702  return false;
1703  }
1704  loadData(is, myGroup);
1705  loadData(is, myDoXform);
1706  loadData(is, myDoRot);
1707  loadData(is, myXord);
1708  loadData(is, myRord);
1709  loadData(is, myT);
1710  loadData(is, myR);
1711  loadData(is, myS);
1712  loadData(is, myShear);
1713  loadData(is, myP);
1714  loadData(is, myPr);
1715  loadData(is, myLookatpath);
1716  loadData(is, myUpvector);
1717  loadData(is, myXformattribs);
1718  loadData(is, myDoclr);
1719  loadData(is, myDiff);
1720  loadData(is, myDoalpha);
1721  loadData(is, myAlpha);
1722  loadData(is, myDocrease);
1723  loadData(is, myCrease);
1724  loadData(is, myDotexture);
1725  loadData(is, myTexture);
1726  loadData(is, myCloseu);
1727  loadData(is, myClosev);
1728  loadData(is, myClampu);
1729  loadData(is, myClampv);
1730  loadData(is, myVtxsort);
1731  loadData(is, myVtxuoff);
1732  loadData(is, myVtxvoff);
1733  loadData(is, myDoweight);
1734  loadData(is, myMetaweight);
1735  loadData(is, myDoprender);
1736  loadData(is, myPrtype);
1737  loadData(is, myPrsize);
1738  loadData(is, myPrblur);
1739  loadData(is, myDovolvis);
1740  loadData(is, myVolvis);
1741  loadData(is, myVolvisiso);
1742  loadData(is, myVolvisdensity);
1743  loadData(is, myDotaper);
1744  loadData(is, myTaper);
1745  loadData(is, myDovolume);
1746  loadData(is, myVolborder);
1747  loadData(is, myVolborderval);
1748  loadData(is, myDovoltol);
1749  loadData(is, myVoltol);
1750  loadData(is, myDovoltypeinfo);
1751  loadData(is, myVoltypeinfo);
1752  loadData(is, myDovistile);
1753  loadData(is, myVistile);
1754  loadData(is, myDovdbclass);
1755  loadData(is, myVdbclass);
1756  loadData(is, myDovdbcreator);
1757  loadData(is, myVdbcreator);
1758  loadData(is, myDovdbtransform);
1759  loadData(is, myVdbtransform);
1760  loadData(is, myDovdbvectype);
1761  loadData(is, myVdbvectype);
1762  loadData(is, myDovdbhalf);
1763  loadData(is, myVdbhalf);
1764  loadData(is, myTemplategrp);
1765  loadData(is, myPshapeu);
1766  loadData(is, myPshapev);
1767 
1768  return true;
1769  }
1770 
1771  const UT_StringHolder & getGroup() const { return myGroup; }
1772  void setGroup(const UT_StringHolder & val) { myGroup = val; }
1774  {
1775  SOP_Node *thissop = cookparms.getNode();
1776  if (!thissop) return getGroup();
1778  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
1779  return result;
1780  }
1781  bool getDoXform() const { return myDoXform; }
1782  void setDoXform(bool val) { myDoXform = val; }
1783  bool opDoXform(const SOP_NodeVerb::CookParms &cookparms) const
1784  {
1785  SOP_Node *thissop = cookparms.getNode();
1786  if (!thissop) return getDoXform();
1787  bool result;
1788  OP_Utils::evalOpParm(result, thissop, "doxform", cookparms.getCookTime(), 0);
1789  return result;
1790  }
1791  DoRot getDoRot() const { return DoRot(myDoRot); }
1792  void setDoRot(DoRot val) { myDoRot = int64(val); }
1793  DoRot opDoRot(const SOP_NodeVerb::CookParms &cookparms) const
1794  {
1795  SOP_Node *thissop = cookparms.getNode();
1796  if (!thissop) return getDoRot();
1797  int64 result;
1798  OP_Utils::evalOpParm(result, thissop, "dorot", cookparms.getCookTime(), 0);
1799  return DoRot(result);
1800  }
1801  Xord getXord() const { return Xord(myXord); }
1802  void setXord(Xord val) { myXord = int64(val); }
1803  Xord opXord(const SOP_NodeVerb::CookParms &cookparms) const
1804  {
1805  SOP_Node *thissop = cookparms.getNode();
1806  if (!thissop) return getXord();
1807  int64 result;
1808  OP_Utils::evalOpParm(result, thissop, "xOrd", cookparms.getCookTime(), 0);
1809  return Xord(result);
1810  }
1811  Rord getRord() const { return Rord(myRord); }
1812  void setRord(Rord val) { myRord = int64(val); }
1813  Rord opRord(const SOP_NodeVerb::CookParms &cookparms) const
1814  {
1815  SOP_Node *thissop = cookparms.getNode();
1816  if (!thissop) return getRord();
1817  int64 result;
1818  OP_Utils::evalOpParm(result, thissop, "rOrd", cookparms.getCookTime(), 0);
1819  return Rord(result);
1820  }
1821  UT_Vector3D getT() const { return myT; }
1822  void setT(UT_Vector3D val) { myT = val; }
1823  UT_Vector3D opT(const SOP_NodeVerb::CookParms &cookparms) const
1824  {
1825  SOP_Node *thissop = cookparms.getNode();
1826  if (!thissop) return getT();
1828  OP_Utils::evalOpParm(result, thissop, "t", cookparms.getCookTime(), 0);
1829  return result;
1830  }
1831  UT_Vector3D getR() const { return myR; }
1832  void setR(UT_Vector3D val) { myR = val; }
1833  UT_Vector3D opR(const SOP_NodeVerb::CookParms &cookparms) const
1834  {
1835  SOP_Node *thissop = cookparms.getNode();
1836  if (!thissop) return getR();
1838  OP_Utils::evalOpParm(result, thissop, "r", cookparms.getCookTime(), 0);
1839  return result;
1840  }
1841  UT_Vector3D getS() const { return myS; }
1842  void setS(UT_Vector3D val) { myS = val; }
1843  UT_Vector3D opS(const SOP_NodeVerb::CookParms &cookparms) const
1844  {
1845  SOP_Node *thissop = cookparms.getNode();
1846  if (!thissop) return getS();
1848  OP_Utils::evalOpParm(result, thissop, "s", cookparms.getCookTime(), 0);
1849  return result;
1850  }
1851  UT_Vector3D getShear() const { return myShear; }
1852  void setShear(UT_Vector3D val) { myShear = val; }
1854  {
1855  SOP_Node *thissop = cookparms.getNode();
1856  if (!thissop) return getShear();
1858  OP_Utils::evalOpParm(result, thissop, "shear", cookparms.getCookTime(), 0);
1859  return result;
1860  }
1861  UT_Vector3D getP() const { return myP; }
1862  void setP(UT_Vector3D val) { myP = val; }
1863  UT_Vector3D opP(const SOP_NodeVerb::CookParms &cookparms) const
1864  {
1865  SOP_Node *thissop = cookparms.getNode();
1866  if (!thissop) return getP();
1868  OP_Utils::evalOpParm(result, thissop, "p", cookparms.getCookTime(), 0);
1869  return result;
1870  }
1871  UT_Vector3D getPr() const { return myPr; }
1872  void setPr(UT_Vector3D val) { myPr = val; }
1873  UT_Vector3D opPr(const SOP_NodeVerb::CookParms &cookparms) const
1874  {
1875  SOP_Node *thissop = cookparms.getNode();
1876  if (!thissop) return getPr();
1878  OP_Utils::evalOpParm(result, thissop, "pr", cookparms.getCookTime(), 0);
1879  return result;
1880  }
1881  const UT_StringHolder & getLookatpath() const { return myLookatpath; }
1882  void setLookatpath(const UT_StringHolder & val) { myLookatpath = val; }
1884  {
1885  SOP_Node *thissop = cookparms.getNode();
1886  if (!thissop) return getLookatpath();
1888  OP_Utils::evalOpParm(result, thissop, "lookatpath", cookparms.getCookTime(), 0);
1889  return result;
1890  }
1891  UT_Vector3D getUpvector() const { return myUpvector; }
1892  void setUpvector(UT_Vector3D val) { myUpvector = val; }
1894  {
1895  SOP_Node *thissop = cookparms.getNode();
1896  if (!thissop) return getUpvector();
1898  OP_Utils::evalOpParm(result, thissop, "upvector", cookparms.getCookTime(), 0);
1899  return result;
1900  }
1901  const UT_StringHolder & getXformattribs() const { return myXformattribs; }
1902  void setXformattribs(const UT_StringHolder & val) { myXformattribs = val; }
1904  {
1905  SOP_Node *thissop = cookparms.getNode();
1906  if (!thissop) return getXformattribs();
1908  OP_Utils::evalOpParm(result, thissop, "xformattribs", cookparms.getCookTime(), 0);
1909  return result;
1910  }
1911  Doclr getDoclr() const { return Doclr(myDoclr); }
1912  void setDoclr(Doclr val) { myDoclr = int64(val); }
1913  Doclr opDoclr(const SOP_NodeVerb::CookParms &cookparms) const
1914  {
1915  SOP_Node *thissop = cookparms.getNode();
1916  if (!thissop) return getDoclr();
1917  int64 result;
1918  OP_Utils::evalOpParm(result, thissop, "doclr", cookparms.getCookTime(), 0);
1919  return Doclr(result);
1920  }
1921  UT_Vector3D getDiff() const { return myDiff; }
1922  void setDiff(UT_Vector3D val) { myDiff = val; }
1924  {
1925  SOP_Node *thissop = cookparms.getNode();
1926  if (!thissop) return getDiff();
1928  OP_Utils::evalOpParm(result, thissop, "diff", cookparms.getCookTime(), 0);
1929  return result;
1930  }
1931  Doalpha getDoalpha() const { return Doalpha(myDoalpha); }
1932  void setDoalpha(Doalpha val) { myDoalpha = int64(val); }
1934  {
1935  SOP_Node *thissop = cookparms.getNode();
1936  if (!thissop) return getDoalpha();
1937  int64 result;
1938  OP_Utils::evalOpParm(result, thissop, "doalpha", cookparms.getCookTime(), 0);
1939  return Doalpha(result);
1940  }
1941  fpreal64 getAlpha() const { return myAlpha; }
1942  void setAlpha(fpreal64 val) { myAlpha = val; }
1943  fpreal64 opAlpha(const SOP_NodeVerb::CookParms &cookparms) const
1944  {
1945  SOP_Node *thissop = cookparms.getNode();
1946  if (!thissop) return getAlpha();
1947  fpreal64 result;
1948  OP_Utils::evalOpParm(result, thissop, "alpha", cookparms.getCookTime(), 0);
1949  return result;
1950  }
1951  Docrease getDocrease() const { return Docrease(myDocrease); }
1952  void setDocrease(Docrease val) { myDocrease = int64(val); }
1954  {
1955  SOP_Node *thissop = cookparms.getNode();
1956  if (!thissop) return getDocrease();
1957  int64 result;
1958  OP_Utils::evalOpParm(result, thissop, "docrease", cookparms.getCookTime(), 0);
1959  return Docrease(result);
1960  }
1961  fpreal64 getCrease() const { return myCrease; }
1962  void setCrease(fpreal64 val) { myCrease = val; }
1964  {
1965  SOP_Node *thissop = cookparms.getNode();
1966  if (!thissop) return getCrease();
1967  fpreal64 result;
1968  OP_Utils::evalOpParm(result, thissop, "crease", cookparms.getCookTime(), 0);
1969  return result;
1970  }
1971  Dotexture getDotexture() const { return Dotexture(myDotexture); }
1972  void setDotexture(Dotexture val) { myDotexture = int64(val); }
1974  {
1975  SOP_Node *thissop = cookparms.getNode();
1976  if (!thissop) return getDotexture();
1977  int64 result;
1978  OP_Utils::evalOpParm(result, thissop, "dotexture", cookparms.getCookTime(), 0);
1979  return Dotexture(result);
1980  }
1981  const UT_StringHolder & getTexture() const { return myTexture; }
1982  void setTexture(const UT_StringHolder & val) { myTexture = val; }
1984  {
1985  SOP_Node *thissop = cookparms.getNode();
1986  if (!thissop) return getTexture();
1988  OP_Utils::evalOpParm(result, thissop, "texture", cookparms.getCookTime(), 0);
1989  return result;
1990  }
1991  Closeu getCloseu() const { return Closeu(myCloseu); }
1992  void setCloseu(Closeu val) { myCloseu = int64(val); }
1993  Closeu opCloseu(const SOP_NodeVerb::CookParms &cookparms) const
1994  {
1995  SOP_Node *thissop = cookparms.getNode();
1996  if (!thissop) return getCloseu();
1997  int64 result;
1998  OP_Utils::evalOpParm(result, thissop, "closeu", cookparms.getCookTime(), 0);
1999  return Closeu(result);
2000  }
2001  Closev getClosev() const { return Closev(myClosev); }
2002  void setClosev(Closev val) { myClosev = int64(val); }
2003  Closev opClosev(const SOP_NodeVerb::CookParms &cookparms) const
2004  {
2005  SOP_Node *thissop = cookparms.getNode();
2006  if (!thissop) return getClosev();
2007  int64 result;
2008  OP_Utils::evalOpParm(result, thissop, "closev", cookparms.getCookTime(), 0);
2009  return Closev(result);
2010  }
2011  Clampu getClampu() const { return Clampu(myClampu); }
2012  void setClampu(Clampu val) { myClampu = int64(val); }
2013  Clampu opClampu(const SOP_NodeVerb::CookParms &cookparms) const
2014  {
2015  SOP_Node *thissop = cookparms.getNode();
2016  if (!thissop) return getClampu();
2017  int64 result;
2018  OP_Utils::evalOpParm(result, thissop, "clampu", cookparms.getCookTime(), 0);
2019  return Clampu(result);
2020  }
2021  Clampv getClampv() const { return Clampv(myClampv); }
2022  void setClampv(Clampv val) { myClampv = int64(val); }
2023  Clampv opClampv(const SOP_NodeVerb::CookParms &cookparms) const
2024  {
2025  SOP_Node *thissop = cookparms.getNode();
2026  if (!thissop) return getClampv();
2027  int64 result;
2028  OP_Utils::evalOpParm(result, thissop, "clampv", cookparms.getCookTime(), 0);
2029  return Clampv(result);
2030  }
2031  Vtxsort getVtxsort() const { return Vtxsort(myVtxsort); }
2032  void setVtxsort(Vtxsort val) { myVtxsort = int64(val); }
2034  {
2035  SOP_Node *thissop = cookparms.getNode();
2036  if (!thissop) return getVtxsort();
2037  int64 result;
2038  OP_Utils::evalOpParm(result, thissop, "vtxsort", cookparms.getCookTime(), 0);
2039  return Vtxsort(result);
2040  }
2041  int64 getVtxuoff() const { return myVtxuoff; }
2042  void setVtxuoff(int64 val) { myVtxuoff = val; }
2043  int64 opVtxuoff(const SOP_NodeVerb::CookParms &cookparms) const
2044  {
2045  SOP_Node *thissop = cookparms.getNode();
2046  if (!thissop) return getVtxuoff();
2047  int64 result;
2048  OP_Utils::evalOpParm(result, thissop, "vtxuoff", cookparms.getCookTime(), 0);
2049  return result;
2050  }
2051  int64 getVtxvoff() const { return myVtxvoff; }
2052  void setVtxvoff(int64 val) { myVtxvoff = val; }
2053  int64 opVtxvoff(const SOP_NodeVerb::CookParms &cookparms) const
2054  {
2055  SOP_Node *thissop = cookparms.getNode();
2056  if (!thissop) return getVtxvoff();
2057  int64 result;
2058  OP_Utils::evalOpParm(result, thissop, "vtxvoff", cookparms.getCookTime(), 0);
2059  return result;
2060  }
2061  bool getDoweight() const { return myDoweight; }
2062  void setDoweight(bool val) { myDoweight = val; }
2063  bool opDoweight(const SOP_NodeVerb::CookParms &cookparms) const
2064  {
2065  SOP_Node *thissop = cookparms.getNode();
2066  if (!thissop) return getDoweight();
2067  bool result;
2068  OP_Utils::evalOpParm(result, thissop, "doweight", cookparms.getCookTime(), 0);
2069  return result;
2070  }
2071  fpreal64 getMetaweight() const { return myMetaweight; }
2072  void setMetaweight(fpreal64 val) { myMetaweight = val; }
2074  {
2075  SOP_Node *thissop = cookparms.getNode();
2076  if (!thissop) return getMetaweight();
2077  fpreal64 result;
2078  OP_Utils::evalOpParm(result, thissop, "metaweight", cookparms.getCookTime(), 0);
2079  return result;
2080  }
2081  bool getDoprender() const { return myDoprender; }
2082  void setDoprender(bool val) { myDoprender = val; }
2083  bool opDoprender(const SOP_NodeVerb::CookParms &cookparms) const
2084  {
2085  SOP_Node *thissop = cookparms.getNode();
2086  if (!thissop) return getDoprender();
2087  bool result;
2088  OP_Utils::evalOpParm(result, thissop, "doprender", cookparms.getCookTime(), 0);
2089  return result;
2090  }
2091  Prtype getPrtype() const { return Prtype(myPrtype); }
2092  void setPrtype(Prtype val) { myPrtype = int64(val); }
2093  Prtype opPrtype(const SOP_NodeVerb::CookParms &cookparms) const
2094  {
2095  SOP_Node *thissop = cookparms.getNode();
2096  if (!thissop) return getPrtype();
2097  int64 result;
2098  OP_Utils::evalOpParm(result, thissop, "prtype", cookparms.getCookTime(), 0);
2099  return Prtype(result);
2100  }
2101  fpreal64 getPrsize() const { return myPrsize; }
2102  void setPrsize(fpreal64 val) { myPrsize = val; }
2104  {
2105  SOP_Node *thissop = cookparms.getNode();
2106  if (!thissop) return getPrsize();
2107  fpreal64 result;
2108  OP_Utils::evalOpParm(result, thissop, "prsize", cookparms.getCookTime(), 0);
2109  return result;
2110  }
2111  fpreal64 getPrblur() const { return myPrblur; }
2112  void setPrblur(fpreal64 val) { myPrblur = val; }
2114  {
2115  SOP_Node *thissop = cookparms.getNode();
2116  if (!thissop) return getPrblur();
2117  fpreal64 result;
2118  OP_Utils::evalOpParm(result, thissop, "prblur", cookparms.getCookTime(), 0);
2119  return result;
2120  }
2121  bool getDovolvis() const { return myDovolvis; }
2122  void setDovolvis(bool val) { myDovolvis = val; }
2123  bool opDovolvis(const SOP_NodeVerb::CookParms &cookparms) const
2124  {
2125  SOP_Node *thissop = cookparms.getNode();
2126  if (!thissop) return getDovolvis();
2127  bool result;
2128  OP_Utils::evalOpParm(result, thissop, "dovolvis", cookparms.getCookTime(), 0);
2129  return result;
2130  }
2131  Volvis getVolvis() const { return Volvis(myVolvis); }
2132  void setVolvis(Volvis val) { myVolvis = int64(val); }
2133  Volvis opVolvis(const SOP_NodeVerb::CookParms &cookparms) const
2134  {
2135  SOP_Node *thissop = cookparms.getNode();
2136  if (!thissop) return getVolvis();
2137  int64 result;
2138  OP_Utils::evalOpParm(result, thissop, "volvis", cookparms.getCookTime(), 0);
2139  return Volvis(result);
2140  }
2141  fpreal64 getVolvisiso() const { return myVolvisiso; }
2142  void setVolvisiso(fpreal64 val) { myVolvisiso = val; }
2144  {
2145  SOP_Node *thissop = cookparms.getNode();
2146  if (!thissop) return getVolvisiso();
2147  fpreal64 result;
2148  OP_Utils::evalOpParm(result, thissop, "volvisiso", cookparms.getCookTime(), 0);
2149  return result;
2150  }
2151  fpreal64 getVolvisdensity() const { return myVolvisdensity; }
2152  void setVolvisdensity(fpreal64 val) { myVolvisdensity = val; }
2154  {
2155  SOP_Node *thissop = cookparms.getNode();
2156  if (!thissop) return getVolvisdensity();
2157  fpreal64 result;
2158  OP_Utils::evalOpParm(result, thissop, "volvisdensity", cookparms.getCookTime(), 0);
2159  return result;
2160  }
2161  bool getDotaper() const { return myDotaper; }
2162  void setDotaper(bool val) { myDotaper = val; }
2163  bool opDotaper(const SOP_NodeVerb::CookParms &cookparms) const
2164  {
2165  SOP_Node *thissop = cookparms.getNode();
2166  if (!thissop) return getDotaper();
2167  bool result;
2168  OP_Utils::evalOpParm(result, thissop, "dotaper", cookparms.getCookTime(), 0);
2169  return result;
2170  }
2171  UT_Vector2D getTaper() const { return myTaper; }
2172  void setTaper(UT_Vector2D val) { myTaper = val; }
2174  {
2175  SOP_Node *thissop = cookparms.getNode();
2176  if (!thissop) return getTaper();
2178  OP_Utils::evalOpParm(result, thissop, "taper", cookparms.getCookTime(), 0);
2179  return result;
2180  }
2181  bool getDovolume() const { return myDovolume; }
2182  void setDovolume(bool val) { myDovolume = val; }
2183  bool opDovolume(const SOP_NodeVerb::CookParms &cookparms) const
2184  {
2185  SOP_Node *thissop = cookparms.getNode();
2186  if (!thissop) return getDovolume();
2187  bool result;
2188  OP_Utils::evalOpParm(result, thissop, "dovolume", cookparms.getCookTime(), 0);
2189  return result;
2190  }
2191  Volborder getVolborder() const { return Volborder(myVolborder); }
2192  void setVolborder(Volborder val) { myVolborder = int64(val); }
2194  {
2195  SOP_Node *thissop = cookparms.getNode();
2196  if (!thissop) return getVolborder();
2197  int64 result;
2198  OP_Utils::evalOpParm(result, thissop, "volborder", cookparms.getCookTime(), 0);
2199  return Volborder(result);
2200  }
2201  fpreal64 getVolborderval() const { return myVolborderval; }
2202  void setVolborderval(fpreal64 val) { myVolborderval = val; }
2204  {
2205  SOP_Node *thissop = cookparms.getNode();
2206  if (!thissop) return getVolborderval();
2207  fpreal64 result;
2208  OP_Utils::evalOpParm(result, thissop, "volborderval", cookparms.getCookTime(), 0);
2209  return result;
2210  }
2211  bool getDovoltol() const { return myDovoltol; }
2212  void setDovoltol(bool val) { myDovoltol = val; }
2213  bool opDovoltol(const SOP_NodeVerb::CookParms &cookparms) const
2214  {
2215  SOP_Node *thissop = cookparms.getNode();
2216  if (!thissop) return getDovoltol();
2217  bool result;
2218  OP_Utils::evalOpParm(result, thissop, "dovoltol", cookparms.getCookTime(), 0);
2219  return result;
2220  }
2221  fpreal64 getVoltol() const { return myVoltol; }
2222  void setVoltol(fpreal64 val) { myVoltol = val; }
2224  {
2225  SOP_Node *thissop = cookparms.getNode();
2226  if (!thissop) return getVoltol();
2227  fpreal64 result;
2228  OP_Utils::evalOpParm(result, thissop, "voltol", cookparms.getCookTime(), 0);
2229  return result;
2230  }
2231  bool getDovoltypeinfo() const { return myDovoltypeinfo; }
2232  void setDovoltypeinfo(bool val) { myDovoltypeinfo = val; }
2233  bool opDovoltypeinfo(const SOP_NodeVerb::CookParms &cookparms) const
2234  {
2235  SOP_Node *thissop = cookparms.getNode();
2236  if (!thissop) return getDovoltypeinfo();
2237  bool result;
2238  OP_Utils::evalOpParm(result, thissop, "dovoltypeinfo", cookparms.getCookTime(), 0);
2239  return result;
2240  }
2241  Voltypeinfo getVoltypeinfo() const { return Voltypeinfo(myVoltypeinfo); }
2242  void setVoltypeinfo(Voltypeinfo val) { myVoltypeinfo = int64(val); }
2244  {
2245  SOP_Node *thissop = cookparms.getNode();
2246  if (!thissop) return getVoltypeinfo();
2247  int64 result;
2248  OP_Utils::evalOpParm(result, thissop, "voltypeinfo", cookparms.getCookTime(), 0);
2249  return Voltypeinfo(result);
2250  }
2251  bool getDovistile() const { return myDovistile; }
2252  void setDovistile(bool val) { myDovistile = val; }
2253  bool opDovistile(const SOP_NodeVerb::CookParms &cookparms) const
2254  {
2255  SOP_Node *thissop = cookparms.getNode();
2256  if (!thissop) return getDovistile();
2257  bool result;
2258  OP_Utils::evalOpParm(result, thissop, "dovistile", cookparms.getCookTime(), 0);
2259  return result;
2260  }
2261  fpreal64 getVistile() const { return myVistile; }
2262  void setVistile(fpreal64 val) { myVistile = val; }
2264  {
2265  SOP_Node *thissop = cookparms.getNode();
2266  if (!thissop) return getVistile();
2267  fpreal64 result;
2268  OP_Utils::evalOpParm(result, thissop, "vistile", cookparms.getCookTime(), 0);
2269  return result;
2270  }
2271  bool getDovdbclass() const { return myDovdbclass; }
2272  void setDovdbclass(bool val) { myDovdbclass = val; }
2273  bool opDovdbclass(const SOP_NodeVerb::CookParms &cookparms) const
2274  {
2275  SOP_Node *thissop = cookparms.getNode();
2276  if (!thissop) return getDovdbclass();
2277  bool result;
2278  OP_Utils::evalOpParm(result, thissop, "dovdbclass", cookparms.getCookTime(), 0);
2279  return result;
2280  }
2281  int64 getVdbclass() const { return myVdbclass; }
2282  void setVdbclass(int64 val) { myVdbclass = val; }
2283  int64 opVdbclass(const SOP_NodeVerb::CookParms &cookparms) const
2284  {
2285  SOP_Node *thissop = cookparms.getNode();
2286  if (!thissop) return getVdbclass();
2287  int64 result;
2288  OP_Utils::evalOpParm(result, thissop, "vdbclass", cookparms.getCookTime(), 0);
2289  return result;
2290  }
2291  bool getDovdbcreator() const { return myDovdbcreator; }
2292  void setDovdbcreator(bool val) { myDovdbcreator = val; }
2293  bool opDovdbcreator(const SOP_NodeVerb::CookParms &cookparms) const
2294  {
2295  SOP_Node *thissop = cookparms.getNode();
2296  if (!thissop) return getDovdbcreator();
2297  bool result;
2298  OP_Utils::evalOpParm(result, thissop, "dovdbcreator", cookparms.getCookTime(), 0);
2299  return result;
2300  }
2301  const UT_StringHolder & getVdbcreator() const { return myVdbcreator; }
2302  void setVdbcreator(const UT_StringHolder & val) { myVdbcreator = val; }
2304  {
2305  SOP_Node *thissop = cookparms.getNode();
2306  if (!thissop) return getVdbcreator();
2308  OP_Utils::evalOpParm(result, thissop, "vdbcreator", cookparms.getCookTime(), 0);
2309  return result;
2310  }
2311  bool getDovdbtransform() const { return myDovdbtransform; }
2312  void setDovdbtransform(bool val) { myDovdbtransform = val; }
2313  bool opDovdbtransform(const SOP_NodeVerb::CookParms &cookparms) const
2314  {
2315  SOP_Node *thissop = cookparms.getNode();
2316  if (!thissop) return getDovdbtransform();
2317  bool result;
2318  OP_Utils::evalOpParm(result, thissop, "dovdbtransform", cookparms.getCookTime(), 0);
2319  return result;
2320  }
2321  bool getVdbtransform() const { return myVdbtransform; }
2322  void setVdbtransform(bool val) { myVdbtransform = val; }
2323  bool opVdbtransform(const SOP_NodeVerb::CookParms &cookparms) const
2324  {
2325  SOP_Node *thissop = cookparms.getNode();
2326  if (!thissop) return getVdbtransform();
2327  bool result;
2328  OP_Utils::evalOpParm(result, thissop, "vdbtransform", cookparms.getCookTime(), 0);
2329  return result;
2330  }
2331  bool getDovdbvectype() const { return myDovdbvectype; }
2332  void setDovdbvectype(bool val) { myDovdbvectype = val; }
2333  bool opDovdbvectype(const SOP_NodeVerb::CookParms &cookparms) const
2334  {
2335  SOP_Node *thissop = cookparms.getNode();
2336  if (!thissop) return getDovdbvectype();
2337  bool result;
2338  OP_Utils::evalOpParm(result, thissop, "dovdbvectype", cookparms.getCookTime(), 0);
2339  return result;
2340  }
2341  int64 getVdbvectype() const { return myVdbvectype; }
2342  void setVdbvectype(int64 val) { myVdbvectype = val; }
2344  {
2345  SOP_Node *thissop = cookparms.getNode();
2346  if (!thissop) return getVdbvectype();
2347  int64 result;
2348  OP_Utils::evalOpParm(result, thissop, "vdbvectype", cookparms.getCookTime(), 0);
2349  return result;
2350  }
2351  bool getDovdbhalf() const { return myDovdbhalf; }
2352  void setDovdbhalf(bool val) { myDovdbhalf = val; }
2353  bool opDovdbhalf(const SOP_NodeVerb::CookParms &cookparms) const
2354  {
2355  SOP_Node *thissop = cookparms.getNode();
2356  if (!thissop) return getDovdbhalf();
2357  bool result;
2358  OP_Utils::evalOpParm(result, thissop, "dovdbhalf", cookparms.getCookTime(), 0);
2359  return result;
2360  }
2361  bool getVdbhalf() const { return myVdbhalf; }
2362  void setVdbhalf(bool val) { myVdbhalf = val; }
2363  bool opVdbhalf(const SOP_NodeVerb::CookParms &cookparms) const
2364  {
2365  SOP_Node *thissop = cookparms.getNode();
2366  if (!thissop) return getVdbhalf();
2367  bool result;
2368  OP_Utils::evalOpParm(result, thissop, "vdbhalf", cookparms.getCookTime(), 0);
2369  return result;
2370  }
2371  const UT_StringHolder & getTemplategrp() const { return myTemplategrp; }
2372  void setTemplategrp(const UT_StringHolder & val) { myTemplategrp = val; }
2374  {
2375  SOP_Node *thissop = cookparms.getNode();
2376  if (!thissop) return getTemplategrp();
2378  OP_Utils::evalOpParm(result, thissop, "templateGrp", cookparms.getCookTime(), 0);
2379  return result;
2380  }
2381  bool getPshapeu() const { return myPshapeu; }
2382  void setPshapeu(bool val) { myPshapeu = val; }
2383  bool opPshapeu(const SOP_NodeVerb::CookParms &cookparms) const
2384  {
2385  SOP_Node *thissop = cookparms.getNode();
2386  if (!thissop) return getPshapeu();
2387  bool result;
2388  OP_Utils::evalOpParm(result, thissop, "pshapeu", cookparms.getCookTime(), 0);
2389  return result;
2390  }
2391  bool getPshapev() const { return myPshapev; }
2392  void setPshapev(bool val) { myPshapev = val; }
2393  bool opPshapev(const SOP_NodeVerb::CookParms &cookparms) const
2394  {
2395  SOP_Node *thissop = cookparms.getNode();
2396  if (!thissop) return getPshapev();
2397  bool result;
2398  OP_Utils::evalOpParm(result, thissop, "pshapev", cookparms.getCookTime(), 0);
2399  return result;
2400  }
2401 
2402 private:
2403  UT_StringHolder myGroup;
2404  bool myDoXform;
2405  int64 myDoRot;
2406  int64 myXord;
2407  int64 myRord;
2408  UT_Vector3D myT;
2409  UT_Vector3D myR;
2410  UT_Vector3D myS;
2411  UT_Vector3D myShear;
2412  UT_Vector3D myP;
2413  UT_Vector3D myPr;
2414  UT_StringHolder myLookatpath;
2415  UT_Vector3D myUpvector;
2416  UT_StringHolder myXformattribs;
2417  int64 myDoclr;
2418  UT_Vector3D myDiff;
2419  int64 myDoalpha;
2420  fpreal64 myAlpha;
2421  int64 myDocrease;
2422  fpreal64 myCrease;
2423  int64 myDotexture;
2424  UT_StringHolder myTexture;
2425  int64 myCloseu;
2426  int64 myClosev;
2427  int64 myClampu;
2428  int64 myClampv;
2429  int64 myVtxsort;
2430  int64 myVtxuoff;
2431  int64 myVtxvoff;
2432  bool myDoweight;
2433  fpreal64 myMetaweight;
2434  bool myDoprender;
2435  int64 myPrtype;
2436  fpreal64 myPrsize;
2437  fpreal64 myPrblur;
2438  bool myDovolvis;
2439  int64 myVolvis;
2440  fpreal64 myVolvisiso;
2441  fpreal64 myVolvisdensity;
2442  bool myDotaper;
2443  UT_Vector2D myTaper;
2444  bool myDovolume;
2445  int64 myVolborder;
2446  fpreal64 myVolborderval;
2447  bool myDovoltol;
2448  fpreal64 myVoltol;
2449  bool myDovoltypeinfo;
2450  int64 myVoltypeinfo;
2451  bool myDovistile;
2452  fpreal64 myVistile;
2453  bool myDovdbclass;
2454  int64 myVdbclass;
2455  bool myDovdbcreator;
2456  UT_StringHolder myVdbcreator;
2457  bool myDovdbtransform;
2458  bool myVdbtransform;
2459  bool myDovdbvectype;
2460  int64 myVdbvectype;
2461  bool myDovdbhalf;
2462  bool myVdbhalf;
2463  UT_StringHolder myTemplategrp;
2464  bool myPshapeu;
2465  bool myPshapev;
2466 
2467 };
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)
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
void setDovoltypeinfo(bool val)
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)
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
fpreal64 getVistile() const
bool opDoweight(const SOP_NodeVerb::CookParms &cookparms) const
void setVdbcreator(const UT_StringHolder &val)
bool opDovistile(const SOP_NodeVerb::CookParms &cookparms) const
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
Voltypeinfo getVoltypeinfo() const
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 UT_StringHolder getToken(DoRot enum_value)
void setT(UT_Vector3D val)
void setVolborderval(fpreal64 val)
void setMetaweight(fpreal64 val)
bool opDovoltypeinfo(const SOP_NodeVerb::CookParms &cookparms) const
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
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
Xord opXord(const SOP_NodeVerb::CookParms &cookparms) const
Docrease opDocrease(const SOP_NodeVerb::CookParms &cookparms) const
void setDovistile(bool val)
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
void setVistile(fpreal64 val)
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
Voltypeinfo opVoltypeinfo(const SOP_NodeVerb::CookParms &cookparms) 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
bool getDovoltypeinfo() 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)
LeafData & operator=(const LeafData &)=delete
Utility class for containing a color ramp.
Definition: UT_Ramp.h:92
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:1395
#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)
fpreal64 opVistile(const SOP_NodeVerb::CookParms &cookparms) const
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:97
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
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 setVoltypeinfo(Voltypeinfo val)
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)