HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_PolyWire.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_PolyWireEnums
24 {
25  enum class UseScaleAttrib
26  {
27  CONSTANT = 0,
28  ATTRIB
29  };
30  enum class UseSmoothAttrib
31  {
32  CONSTANT = 0,
33  ATTRIB
34  };
35  enum class UseDivAttrib
36  {
37  CONSTANT = 0,
38  ATTRIB
39  };
40  enum class UseSegsAttrib
41  {
42  CONSTANT = 0,
43  ATTRIB
44  };
45  enum class UseTextVAttrib
46  {
47  CONSTANT = 0,
48  ATTRIB
49  };
50  enum class UseUpAttrib
51  {
52  OFF = 0,
53  ON,
54  ATTRIB
55  };
56 }
57 
58 
60 {
61 public:
62  static int version() { return 1; }
63 
65  {
66  myGroup = ""_UTsh;
67  myRadius = 0.1;
68  myUseScaleAttrib = 0;
69  myScaleAttrib = "pscale"_UTsh;
70  myJointcorrect = true;
71  myMaxscale = 2;
72  mySmooth = 1;
73  myUseSmoothAttrib = 0;
74  mySmoothAttrib = "smooth"_UTsh;
75  myMaxValence = 25;
76  myDiv = 4;
77  myUseDivAttrib = 0;
78  myDivAttrib = "div"_UTsh;
79  mySegs = 1;
80  myUseSegsAttrib = 0;
81  mySegsAttrib = "segs"_UTsh;
82  myUseSegScale = true;
83  mySegScale = UT_Vector2D(0,0);
84  myDotexture = true;
85  myUoff = 0;
86  myTextu = UT_Vector2D(0,1);
87  myUseTextVAttrib = 0;
88  myTextVAttrib = "arc"_UTsh;
89  myTextv = UT_Vector2D(0,1);
90  myUseUpAttrib = 0;
91  myUpvector = UT_Vector3D(0,1,0);
92  myUpAttrib = "up"_UTsh;
93 
94  }
95 
96  explicit SOP_PolyWireParms(const SOP_PolyWireParms &) = default;
97  SOP_PolyWireParms &operator=(const SOP_PolyWireParms &) = default;
98  SOP_PolyWireParms(SOP_PolyWireParms &&) noexcept = default;
99  SOP_PolyWireParms &operator=(SOP_PolyWireParms &&) noexcept = default;
100 
101  ~SOP_PolyWireParms() override {}
102 
103  bool operator==(const SOP_PolyWireParms &src) const
104  {
105  if (myGroup != src.myGroup) return false;
106  if (myRadius != src.myRadius) return false;
107  if (myUseScaleAttrib != src.myUseScaleAttrib) return false;
108  if (myScaleAttrib != src.myScaleAttrib) return false;
109  if (myJointcorrect != src.myJointcorrect) return false;
110  if (myMaxscale != src.myMaxscale) return false;
111  if (mySmooth != src.mySmooth) return false;
112  if (myUseSmoothAttrib != src.myUseSmoothAttrib) return false;
113  if (mySmoothAttrib != src.mySmoothAttrib) return false;
114  if (myMaxValence != src.myMaxValence) return false;
115  if (myDiv != src.myDiv) return false;
116  if (myUseDivAttrib != src.myUseDivAttrib) return false;
117  if (myDivAttrib != src.myDivAttrib) return false;
118  if (mySegs != src.mySegs) return false;
119  if (myUseSegsAttrib != src.myUseSegsAttrib) return false;
120  if (mySegsAttrib != src.mySegsAttrib) return false;
121  if (myUseSegScale != src.myUseSegScale) return false;
122  if (mySegScale != src.mySegScale) return false;
123  if (myDotexture != src.myDotexture) return false;
124  if (myUoff != src.myUoff) return false;
125  if (myTextu != src.myTextu) return false;
126  if (myUseTextVAttrib != src.myUseTextVAttrib) return false;
127  if (myTextVAttrib != src.myTextVAttrib) return false;
128  if (myTextv != src.myTextv) return false;
129  if (myUseUpAttrib != src.myUseUpAttrib) return false;
130  if (myUpvector != src.myUpvector) return false;
131  if (myUpAttrib != src.myUpAttrib) return false;
132 
133  return true;
134  }
135  bool operator!=(const SOP_PolyWireParms &src) const
136  {
137  return !operator==(src);
138  }
145 
146 
147 
148  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
149  {
150  myGroup = ""_UTsh;
151  if (true)
152  graph->evalOpParm(myGroup, nodeidx, "group", time, 0);
153  myRadius = 0.1;
154  if (true)
155  graph->evalOpParm(myRadius, nodeidx, "radius", time, 0);
156  myUseScaleAttrib = 0;
157  if (true)
158  graph->evalOpParm(myUseScaleAttrib, nodeidx, "usescaleattrib", time, 0);
159  myScaleAttrib = "pscale"_UTsh;
160  if (true && ( (true&&!(((int64(getUseScaleAttrib())==0)))) ) )
161  graph->evalOpParm(myScaleAttrib, nodeidx, "scaleattrib", time, 0);
162  myJointcorrect = true;
163  if (true)
164  graph->evalOpParm(myJointcorrect, nodeidx, "jointcorrect", time, 0);
165  myMaxscale = 2;
166  if (true && ( (true&&!(((getJointcorrect()==0)))) ) )
167  graph->evalOpParm(myMaxscale, nodeidx, "maxscale", time, 0);
168  mySmooth = 1;
169  if (true)
170  graph->evalOpParm(mySmooth, nodeidx, "smooth", time, 0);
171  myUseSmoothAttrib = 0;
172  if (true)
173  graph->evalOpParm(myUseSmoothAttrib, nodeidx, "usesmoothattrib", time, 0);
174  mySmoothAttrib = "smooth"_UTsh;
175  if (true && ( (true&&!(((int64(getUseSmoothAttrib())==0)))) ) )
176  graph->evalOpParm(mySmoothAttrib, nodeidx, "smoothattrib", time, 0);
177  myMaxValence = 25;
178  if (true)
179  graph->evalOpParm(myMaxValence, nodeidx, "maxvalence", time, 0);
180  myDiv = 4;
181  if (true)
182  graph->evalOpParm(myDiv, nodeidx, "div", time, 0);
183  myUseDivAttrib = 0;
184  if (true)
185  graph->evalOpParm(myUseDivAttrib, nodeidx, "usedivattrib", time, 0);
186  myDivAttrib = "div"_UTsh;
187  if (true && ( (true&&!(((int64(getUseDivAttrib())==0)))) ) )
188  graph->evalOpParm(myDivAttrib, nodeidx, "divattrib", time, 0);
189  mySegs = 1;
190  if (true)
191  graph->evalOpParm(mySegs, nodeidx, "segs", time, 0);
192  myUseSegsAttrib = 0;
193  if (true)
194  graph->evalOpParm(myUseSegsAttrib, nodeidx, "usesegsattrib", time, 0);
195  mySegsAttrib = "segs"_UTsh;
196  if (true && ( (true&&!(((int64(getUseSegsAttrib())==0)))) ) )
197  graph->evalOpParm(mySegsAttrib, nodeidx, "segsattrib", time, 0);
198  myUseSegScale = true;
199  if (true)
200  graph->evalOpParm(myUseSegScale, nodeidx, "usesegscale", time, 0);
201  mySegScale = UT_Vector2D(0,0);
202  if (true && ( (true&&!(((getUseSegScale()==0)))) ) )
203  graph->evalOpParm(mySegScale, nodeidx, "segscale", time, 0);
204  myDotexture = true;
205  if (true)
206  graph->evalOpParm(myDotexture, nodeidx, "dotexture", time, 0);
207  myUoff = 0;
208  if (true && ( (true&&!(((getDotexture()==0)))) ) )
209  graph->evalOpParm(myUoff, nodeidx, "uoff", time, 0);
210  myTextu = UT_Vector2D(0,1);
211  if (true && ( (true&&!(((getDotexture()==0)))) ) )
212  graph->evalOpParm(myTextu, nodeidx, "textu", time, 0);
213  myUseTextVAttrib = 0;
214  if (true && ( (true&&!(((getDotexture()==0)))) ) )
215  graph->evalOpParm(myUseTextVAttrib, nodeidx, "usetextvattrib", time, 0);
216  myTextVAttrib = "arc"_UTsh;
217  if (true && ( (true&&!(((getDotexture()==0))||((int64(getUseTextVAttrib())!=1)))) ) )
218  graph->evalOpParm(myTextVAttrib, nodeidx, "textvattrib", time, 0);
219  myTextv = UT_Vector2D(0,1);
220  if (true && ( (true&&!(((getDotexture()==0))||((int64(getUseTextVAttrib())!=0)))) ) )
221  graph->evalOpParm(myTextv, nodeidx, "textv", time, 0);
222  myUseUpAttrib = 0;
223  if (true)
224  graph->evalOpParm(myUseUpAttrib, nodeidx, "upenable", time, 0);
225  myUpvector = UT_Vector3D(0,1,0);
226  if (true && ( (true&&!(((int64(getUseUpAttrib())!=1)))) ) )
227  graph->evalOpParm(myUpvector, nodeidx, "upvector", time, 0);
228  myUpAttrib = "up"_UTsh;
229  if (true && ( (true&&!(((int64(getUseUpAttrib())!=2)))) ) )
230  graph->evalOpParm(myUpAttrib, nodeidx, "upattrib", time, 0);
231 
232  }
233 
234 
235  void loadFromOpSubclass(const LoadParms &loadparms) override
236  {
237  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
238  }
239 
240 
241  void copyFrom(const OP_NodeParms *src) override
242  {
243  *this = *((const SOP_PolyWireParms *)src);
244  }
245 
246  template <typename T>
247  void
248  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
249  {
250  if (idx.size() < 1)
251  return;
252  UT_ASSERT(idx.size() == instance.size()+1);
253  if (idx.size() != instance.size()+1)
254  return;
255  switch (idx[0])
256  {
257  case 0:
258  coerceValue(value, myGroup);
259  break;
260  case 1:
261  coerceValue(value, myRadius);
262  break;
263  case 2:
264  coerceValue(value, myUseScaleAttrib);
265  break;
266  case 3:
267  coerceValue(value, myScaleAttrib);
268  break;
269  case 4:
270  coerceValue(value, myJointcorrect);
271  break;
272  case 5:
273  coerceValue(value, myMaxscale);
274  break;
275  case 6:
276  coerceValue(value, mySmooth);
277  break;
278  case 7:
279  coerceValue(value, myUseSmoothAttrib);
280  break;
281  case 8:
282  coerceValue(value, mySmoothAttrib);
283  break;
284  case 9:
285  coerceValue(value, myMaxValence);
286  break;
287  case 10:
288  coerceValue(value, myDiv);
289  break;
290  case 11:
291  coerceValue(value, myUseDivAttrib);
292  break;
293  case 12:
294  coerceValue(value, myDivAttrib);
295  break;
296  case 13:
297  coerceValue(value, mySegs);
298  break;
299  case 14:
300  coerceValue(value, myUseSegsAttrib);
301  break;
302  case 15:
303  coerceValue(value, mySegsAttrib);
304  break;
305  case 16:
306  coerceValue(value, myUseSegScale);
307  break;
308  case 17:
309  coerceValue(value, mySegScale);
310  break;
311  case 18:
312  coerceValue(value, myDotexture);
313  break;
314  case 19:
315  coerceValue(value, myUoff);
316  break;
317  case 20:
318  coerceValue(value, myTextu);
319  break;
320  case 21:
321  coerceValue(value, myUseTextVAttrib);
322  break;
323  case 22:
324  coerceValue(value, myTextVAttrib);
325  break;
326  case 23:
327  coerceValue(value, myTextv);
328  break;
329  case 24:
330  coerceValue(value, myUseUpAttrib);
331  break;
332  case 25:
333  coerceValue(value, myUpvector);
334  break;
335  case 26:
336  coerceValue(value, myUpAttrib);
337  break;
338 
339  }
340  }
341 
342  bool isParmColorRamp(exint idx) const override
343  {
344  switch (idx)
345  {
346 
347  }
348  return false;
349  }
350 
351  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
352  { doGetParmValue(idx, instance, value); }
353  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
354  { doGetParmValue(idx, instance, value); }
355  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
356  { doGetParmValue(idx, instance, value); }
357  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
358  { doGetParmValue(idx, instance, value); }
359  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
360  { doGetParmValue(idx, instance, value); }
361  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
362  { doGetParmValue(idx, instance, value); }
363  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
364  { doGetParmValue(idx, instance, value); }
365  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
366  { doGetParmValue(idx, instance, value); }
367  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
368  { doGetParmValue(idx, instance, value); }
369  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
370  { doGetParmValue(idx, instance, value); }
371  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
372  { doGetParmValue(idx, instance, value); }
373 
374  template <typename T>
375  void
376  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
377  {
378  if (idx.size() < 1)
379  return;
380  UT_ASSERT(idx.size() == instance.size()+1);
381  if (idx.size() != instance.size()+1)
382  return;
383  switch (idx[0])
384  {
385  case 0:
386  coerceValue(myGroup, ( ( value ) ));
387  break;
388  case 1:
389  coerceValue(myRadius, ( ( value ) ));
390  break;
391  case 2:
392  coerceValue(myUseScaleAttrib, clampMinValue(0, clampMaxValue(1, value ) ));
393  break;
394  case 3:
395  coerceValue(myScaleAttrib, ( ( value ) ));
396  break;
397  case 4:
398  coerceValue(myJointcorrect, ( ( value ) ));
399  break;
400  case 5:
401  coerceValue(myMaxscale, clampMinValue(1, ( value ) ));
402  break;
403  case 6:
404  coerceValue(mySmooth, ( ( value ) ));
405  break;
406  case 7:
407  coerceValue(myUseSmoothAttrib, clampMinValue(0, clampMaxValue(1, value ) ));
408  break;
409  case 8:
410  coerceValue(mySmoothAttrib, ( ( value ) ));
411  break;
412  case 9:
413  coerceValue(myMaxValence, clampMinValue(0, ( value ) ));
414  break;
415  case 10:
416  coerceValue(myDiv, clampMinValue(3, ( value ) ));
417  break;
418  case 11:
419  coerceValue(myUseDivAttrib, clampMinValue(0, clampMaxValue(1, value ) ));
420  break;
421  case 12:
422  coerceValue(myDivAttrib, ( ( value ) ));
423  break;
424  case 13:
425  coerceValue(mySegs, clampMinValue(1, ( value ) ));
426  break;
427  case 14:
428  coerceValue(myUseSegsAttrib, clampMinValue(0, clampMaxValue(1, value ) ));
429  break;
430  case 15:
431  coerceValue(mySegsAttrib, ( ( value ) ));
432  break;
433  case 16:
434  coerceValue(myUseSegScale, ( ( value ) ));
435  break;
436  case 17:
437  coerceValue(mySegScale, ( ( value ) ));
438  break;
439  case 18:
440  coerceValue(myDotexture, ( ( value ) ));
441  break;
442  case 19:
443  coerceValue(myUoff, ( ( value ) ));
444  break;
445  case 20:
446  coerceValue(myTextu, ( ( value ) ));
447  break;
448  case 21:
449  coerceValue(myUseTextVAttrib, clampMinValue(0, clampMaxValue(1, value ) ));
450  break;
451  case 22:
452  coerceValue(myTextVAttrib, ( ( value ) ));
453  break;
454  case 23:
455  coerceValue(myTextv, ( ( value ) ));
456  break;
457  case 24:
458  coerceValue(myUseUpAttrib, clampMinValue(0, clampMaxValue(2, value ) ));
459  break;
460  case 25:
461  coerceValue(myUpvector, ( ( value ) ));
462  break;
463  case 26:
464  coerceValue(myUpAttrib, ( ( value ) ));
465  break;
466 
467  }
468  }
469 
470  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
471  { doSetParmValue(idx, instance, value); }
472  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
473  { doSetParmValue(idx, instance, value); }
474  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
475  { doSetParmValue(idx, instance, value); }
476  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
477  { doSetParmValue(idx, instance, value); }
478  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
479  { doSetParmValue(idx, instance, value); }
480  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
481  { doSetParmValue(idx, instance, value); }
482  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
483  { doSetParmValue(idx, instance, value); }
484  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
485  { doSetParmValue(idx, instance, value); }
486  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
487  { doSetParmValue(idx, instance, value); }
488  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
489  { doSetParmValue(idx, instance, value); }
490  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
491  { doSetParmValue(idx, instance, value); }
492 
493  exint getNestNumParms(TempIndex idx) const override
494  {
495  if (idx.size() == 0)
496  return 27;
497  switch (idx[0])
498  {
499 
500  }
501  // Invalid
502  return 0;
503  }
504 
505  const char *getNestParmName(TempIndex fieldnum) const override
506  {
507  if (fieldnum.size() < 1)
508  return 0;
509  switch (fieldnum[0])
510  {
511  case 0:
512  return "group";
513  case 1:
514  return "radius";
515  case 2:
516  return "usescaleattrib";
517  case 3:
518  return "scaleattrib";
519  case 4:
520  return "jointcorrect";
521  case 5:
522  return "maxscale";
523  case 6:
524  return "smooth";
525  case 7:
526  return "usesmoothattrib";
527  case 8:
528  return "smoothattrib";
529  case 9:
530  return "maxvalence";
531  case 10:
532  return "div";
533  case 11:
534  return "usedivattrib";
535  case 12:
536  return "divattrib";
537  case 13:
538  return "segs";
539  case 14:
540  return "usesegsattrib";
541  case 15:
542  return "segsattrib";
543  case 16:
544  return "usesegscale";
545  case 17:
546  return "segscale";
547  case 18:
548  return "dotexture";
549  case 19:
550  return "uoff";
551  case 20:
552  return "textu";
553  case 21:
554  return "usetextvattrib";
555  case 22:
556  return "textvattrib";
557  case 23:
558  return "textv";
559  case 24:
560  return "upenable";
561  case 25:
562  return "upvector";
563  case 26:
564  return "upattrib";
565 
566  }
567  return 0;
568  }
569 
570  ParmType getNestParmType(TempIndex fieldnum) const override
571  {
572  if (fieldnum.size() < 1)
573  return PARM_UNSUPPORTED;
574  switch (fieldnum[0])
575  {
576  case 0:
577  return PARM_STRING;
578  case 1:
579  return PARM_FLOAT;
580  case 2:
581  return PARM_INTEGER;
582  case 3:
583  return PARM_STRING;
584  case 4:
585  return PARM_INTEGER;
586  case 5:
587  return PARM_FLOAT;
588  case 6:
589  return PARM_INTEGER;
590  case 7:
591  return PARM_INTEGER;
592  case 8:
593  return PARM_STRING;
594  case 9:
595  return PARM_INTEGER;
596  case 10:
597  return PARM_INTEGER;
598  case 11:
599  return PARM_INTEGER;
600  case 12:
601  return PARM_STRING;
602  case 13:
603  return PARM_INTEGER;
604  case 14:
605  return PARM_INTEGER;
606  case 15:
607  return PARM_STRING;
608  case 16:
609  return PARM_INTEGER;
610  case 17:
611  return PARM_VECTOR2;
612  case 18:
613  return PARM_INTEGER;
614  case 19:
615  return PARM_FLOAT;
616  case 20:
617  return PARM_VECTOR2;
618  case 21:
619  return PARM_INTEGER;
620  case 22:
621  return PARM_STRING;
622  case 23:
623  return PARM_VECTOR2;
624  case 24:
625  return PARM_INTEGER;
626  case 25:
627  return PARM_VECTOR3;
628  case 26:
629  return PARM_STRING;
630 
631  }
632  return PARM_UNSUPPORTED;
633  }
634 
635  // Boiler plate to load individual types.
636  static void loadData(UT_IStream &is, int64 &v)
637  { is.bread(&v, 1); }
638  static void loadData(UT_IStream &is, bool &v)
639  { int64 iv; is.bread(&iv, 1); v = iv; }
640  static void loadData(UT_IStream &is, fpreal64 &v)
641  { is.bread<fpreal64>(&v, 1); }
642  static void loadData(UT_IStream &is, UT_Vector2D &v)
643  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
644  static void loadData(UT_IStream &is, UT_Vector3D &v)
645  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
646  is.bread<fpreal64>(&v.z(), 1); }
647  static void loadData(UT_IStream &is, UT_Vector4D &v)
648  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
649  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
650  static void loadData(UT_IStream &is, UT_Matrix2D &v)
651  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
652  static void loadData(UT_IStream &is, UT_Matrix3D &v)
653  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
654  static void loadData(UT_IStream &is, UT_Matrix4D &v)
655  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
656  static void loadData(UT_IStream &is, UT_Vector2I &v)
657  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
658  static void loadData(UT_IStream &is, UT_Vector3I &v)
659  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
660  is.bread<int64>(&v.z(), 1); }
661  static void loadData(UT_IStream &is, UT_Vector4I &v)
662  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
663  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
665  { is.bread(v); }
667  { UT_StringHolder rampdata;
668  loadData(is, rampdata);
669  if (rampdata.isstring())
670  {
671  v.reset(new UT_Ramp());
672  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
673  v->load(istr);
674  }
675  else v.reset();
676  }
679  loadData(is, data);
680  if (data.isstring())
681  {
682  // Find the data type.
683  const char *colon = UT_StringWrap(data).findChar(':');
684  if (colon)
685  {
686  int typelen = colon - data.buffer();
688  type.strncpy(data.buffer(), typelen);
689  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
690 
691  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
692  }
693  }
694  else v.reset();
695  }
696 
697  static void saveData(std::ostream &os, int64 v)
698  { UTwrite(os, &v); }
699  static void saveData(std::ostream &os, bool v)
700  { int64 iv = v; UTwrite(os, &iv); }
701  static void saveData(std::ostream &os, fpreal64 v)
702  { UTwrite<fpreal64>(os, &v); }
703  static void saveData(std::ostream &os, UT_Vector2D v)
704  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
705  static void saveData(std::ostream &os, UT_Vector3D v)
706  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
707  UTwrite<fpreal64>(os, &v.z()); }
708  static void saveData(std::ostream &os, UT_Vector4D v)
709  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
710  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
711  static void saveData(std::ostream &os, UT_Matrix2D v)
713  static void saveData(std::ostream &os, UT_Matrix3D v)
715  static void saveData(std::ostream &os, UT_Matrix4D v)
717  static void saveData(std::ostream &os, UT_StringHolder s)
718  { UT_StringWrap(s).saveBinary(os); }
719  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
721  UT_OStringStream ostr;
722  if (s) s->save(ostr);
723  result = ostr.str();
724  saveData(os, result);
725  }
726  static void saveData(std::ostream &os, PRM_DataItemHandle s)
728  UT_OStringStream ostr;
729  if (s)
730  {
731  ostr << s->getDataTypeToken();
732  ostr << ":";
733  s->saveBinary(ostr);
734  }
735  result = ostr.str();
736  saveData(os, result);
737  }
738 
739 
740  void save(std::ostream &os) const
741  {
742  int32 v = version();
743  UTwrite(os, &v);
744  saveData(os, myGroup);
745  saveData(os, myRadius);
746  saveData(os, myUseScaleAttrib);
747  saveData(os, myScaleAttrib);
748  saveData(os, myJointcorrect);
749  saveData(os, myMaxscale);
750  saveData(os, mySmooth);
751  saveData(os, myUseSmoothAttrib);
752  saveData(os, mySmoothAttrib);
753  saveData(os, myMaxValence);
754  saveData(os, myDiv);
755  saveData(os, myUseDivAttrib);
756  saveData(os, myDivAttrib);
757  saveData(os, mySegs);
758  saveData(os, myUseSegsAttrib);
759  saveData(os, mySegsAttrib);
760  saveData(os, myUseSegScale);
761  saveData(os, mySegScale);
762  saveData(os, myDotexture);
763  saveData(os, myUoff);
764  saveData(os, myTextu);
765  saveData(os, myUseTextVAttrib);
766  saveData(os, myTextVAttrib);
767  saveData(os, myTextv);
768  saveData(os, myUseUpAttrib);
769  saveData(os, myUpvector);
770  saveData(os, myUpAttrib);
771 
772  }
773 
774  bool load(UT_IStream &is)
775  {
776  int32 v;
777  is.bread(&v, 1);
778  if (version() != v)
779  {
780  // Fail incompatible versions
781  return false;
782  }
783  loadData(is, myGroup);
784  loadData(is, myRadius);
785  loadData(is, myUseScaleAttrib);
786  loadData(is, myScaleAttrib);
787  loadData(is, myJointcorrect);
788  loadData(is, myMaxscale);
789  loadData(is, mySmooth);
790  loadData(is, myUseSmoothAttrib);
791  loadData(is, mySmoothAttrib);
792  loadData(is, myMaxValence);
793  loadData(is, myDiv);
794  loadData(is, myUseDivAttrib);
795  loadData(is, myDivAttrib);
796  loadData(is, mySegs);
797  loadData(is, myUseSegsAttrib);
798  loadData(is, mySegsAttrib);
799  loadData(is, myUseSegScale);
800  loadData(is, mySegScale);
801  loadData(is, myDotexture);
802  loadData(is, myUoff);
803  loadData(is, myTextu);
804  loadData(is, myUseTextVAttrib);
805  loadData(is, myTextVAttrib);
806  loadData(is, myTextv);
807  loadData(is, myUseUpAttrib);
808  loadData(is, myUpvector);
809  loadData(is, myUpAttrib);
810 
811  return true;
812  }
813 
814  const UT_StringHolder & getGroup() const { return myGroup; }
815  void setGroup(const UT_StringHolder & val) { myGroup = val; }
817  {
818  SOP_Node *thissop = cookparms.getNode();
819  if (!thissop) return getGroup();
821  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
822  return result;
823  }
824  fpreal64 getRadius() const { return myRadius; }
825  void setRadius(fpreal64 val) { myRadius = val; }
826  fpreal64 opRadius(const SOP_NodeVerb::CookParms &cookparms) const
827  {
828  SOP_Node *thissop = cookparms.getNode();
829  if (!thissop) return getRadius();
831  OP_Utils::evalOpParm(result, thissop, "radius", cookparms.getCookTime(), 0);
832  return result;
833  }
834  UseScaleAttrib getUseScaleAttrib() const { return UseScaleAttrib(myUseScaleAttrib); }
835  void setUseScaleAttrib(UseScaleAttrib val) { myUseScaleAttrib = int64(val); }
837  {
838  SOP_Node *thissop = cookparms.getNode();
839  if (!thissop) return getUseScaleAttrib();
840  int64 result;
841  OP_Utils::evalOpParm(result, thissop, "usescaleattrib", cookparms.getCookTime(), 0);
842  return UseScaleAttrib(result);
843  }
844  const UT_StringHolder & getScaleAttrib() const { return myScaleAttrib; }
845  void setScaleAttrib(const UT_StringHolder & val) { myScaleAttrib = val; }
847  {
848  SOP_Node *thissop = cookparms.getNode();
849  if (!thissop) return getScaleAttrib();
851  OP_Utils::evalOpParm(result, thissop, "scaleattrib", cookparms.getCookTime(), 0);
852  return result;
853  }
854  bool getJointcorrect() const { return myJointcorrect; }
855  void setJointcorrect(bool val) { myJointcorrect = val; }
856  bool opJointcorrect(const SOP_NodeVerb::CookParms &cookparms) const
857  {
858  SOP_Node *thissop = cookparms.getNode();
859  if (!thissop) return getJointcorrect();
860  bool result;
861  OP_Utils::evalOpParm(result, thissop, "jointcorrect", cookparms.getCookTime(), 0);
862  return result;
863  }
864  fpreal64 getMaxscale() const { return myMaxscale; }
865  void setMaxscale(fpreal64 val) { myMaxscale = val; }
867  {
868  SOP_Node *thissop = cookparms.getNode();
869  if (!thissop) return getMaxscale();
871  OP_Utils::evalOpParm(result, thissop, "maxscale", cookparms.getCookTime(), 0);
872  return result;
873  }
874  int64 getSmooth() const { return mySmooth; }
875  void setSmooth(int64 val) { mySmooth = val; }
876  int64 opSmooth(const SOP_NodeVerb::CookParms &cookparms) const
877  {
878  SOP_Node *thissop = cookparms.getNode();
879  if (!thissop) return getSmooth();
880  int64 result;
881  OP_Utils::evalOpParm(result, thissop, "smooth", cookparms.getCookTime(), 0);
882  return result;
883  }
884  UseSmoothAttrib getUseSmoothAttrib() const { return UseSmoothAttrib(myUseSmoothAttrib); }
885  void setUseSmoothAttrib(UseSmoothAttrib val) { myUseSmoothAttrib = int64(val); }
887  {
888  SOP_Node *thissop = cookparms.getNode();
889  if (!thissop) return getUseSmoothAttrib();
890  int64 result;
891  OP_Utils::evalOpParm(result, thissop, "usesmoothattrib", cookparms.getCookTime(), 0);
892  return UseSmoothAttrib(result);
893  }
894  const UT_StringHolder & getSmoothAttrib() const { return mySmoothAttrib; }
895  void setSmoothAttrib(const UT_StringHolder & val) { mySmoothAttrib = val; }
897  {
898  SOP_Node *thissop = cookparms.getNode();
899  if (!thissop) return getSmoothAttrib();
901  OP_Utils::evalOpParm(result, thissop, "smoothattrib", cookparms.getCookTime(), 0);
902  return result;
903  }
904  int64 getMaxValence() const { return myMaxValence; }
905  void setMaxValence(int64 val) { myMaxValence = val; }
907  {
908  SOP_Node *thissop = cookparms.getNode();
909  if (!thissop) return getMaxValence();
910  int64 result;
911  OP_Utils::evalOpParm(result, thissop, "maxvalence", cookparms.getCookTime(), 0);
912  return result;
913  }
914  int64 getDiv() const { return myDiv; }
915  void setDiv(int64 val) { myDiv = val; }
916  int64 opDiv(const SOP_NodeVerb::CookParms &cookparms) const
917  {
918  SOP_Node *thissop = cookparms.getNode();
919  if (!thissop) return getDiv();
920  int64 result;
921  OP_Utils::evalOpParm(result, thissop, "div", cookparms.getCookTime(), 0);
922  return result;
923  }
924  UseDivAttrib getUseDivAttrib() const { return UseDivAttrib(myUseDivAttrib); }
925  void setUseDivAttrib(UseDivAttrib val) { myUseDivAttrib = int64(val); }
927  {
928  SOP_Node *thissop = cookparms.getNode();
929  if (!thissop) return getUseDivAttrib();
930  int64 result;
931  OP_Utils::evalOpParm(result, thissop, "usedivattrib", cookparms.getCookTime(), 0);
932  return UseDivAttrib(result);
933  }
934  const UT_StringHolder & getDivAttrib() const { return myDivAttrib; }
935  void setDivAttrib(const UT_StringHolder & val) { myDivAttrib = val; }
937  {
938  SOP_Node *thissop = cookparms.getNode();
939  if (!thissop) return getDivAttrib();
941  OP_Utils::evalOpParm(result, thissop, "divattrib", cookparms.getCookTime(), 0);
942  return result;
943  }
944  int64 getSegs() const { return mySegs; }
945  void setSegs(int64 val) { mySegs = val; }
946  int64 opSegs(const SOP_NodeVerb::CookParms &cookparms) const
947  {
948  SOP_Node *thissop = cookparms.getNode();
949  if (!thissop) return getSegs();
950  int64 result;
951  OP_Utils::evalOpParm(result, thissop, "segs", cookparms.getCookTime(), 0);
952  return result;
953  }
954  UseSegsAttrib getUseSegsAttrib() const { return UseSegsAttrib(myUseSegsAttrib); }
955  void setUseSegsAttrib(UseSegsAttrib val) { myUseSegsAttrib = int64(val); }
957  {
958  SOP_Node *thissop = cookparms.getNode();
959  if (!thissop) return getUseSegsAttrib();
960  int64 result;
961  OP_Utils::evalOpParm(result, thissop, "usesegsattrib", cookparms.getCookTime(), 0);
962  return UseSegsAttrib(result);
963  }
964  const UT_StringHolder & getSegsAttrib() const { return mySegsAttrib; }
965  void setSegsAttrib(const UT_StringHolder & val) { mySegsAttrib = val; }
967  {
968  SOP_Node *thissop = cookparms.getNode();
969  if (!thissop) return getSegsAttrib();
971  OP_Utils::evalOpParm(result, thissop, "segsattrib", cookparms.getCookTime(), 0);
972  return result;
973  }
974  bool getUseSegScale() const { return myUseSegScale; }
975  void setUseSegScale(bool val) { myUseSegScale = val; }
976  bool opUseSegScale(const SOP_NodeVerb::CookParms &cookparms) const
977  {
978  SOP_Node *thissop = cookparms.getNode();
979  if (!thissop) return getUseSegScale();
980  bool result;
981  OP_Utils::evalOpParm(result, thissop, "usesegscale", cookparms.getCookTime(), 0);
982  return result;
983  }
984  UT_Vector2D getSegScale() const { return mySegScale; }
985  void setSegScale(UT_Vector2D val) { mySegScale = val; }
987  {
988  SOP_Node *thissop = cookparms.getNode();
989  if (!thissop) return getSegScale();
991  OP_Utils::evalOpParm(result, thissop, "segscale", cookparms.getCookTime(), 0);
992  return result;
993  }
994  bool getDotexture() const { return myDotexture; }
995  void setDotexture(bool val) { myDotexture = val; }
996  bool opDotexture(const SOP_NodeVerb::CookParms &cookparms) const
997  {
998  SOP_Node *thissop = cookparms.getNode();
999  if (!thissop) return getDotexture();
1000  bool result;
1001  OP_Utils::evalOpParm(result, thissop, "dotexture", cookparms.getCookTime(), 0);
1002  return result;
1003  }
1004  fpreal64 getUoff() const { return myUoff; }
1005  void setUoff(fpreal64 val) { myUoff = val; }
1006  fpreal64 opUoff(const SOP_NodeVerb::CookParms &cookparms) const
1007  {
1008  SOP_Node *thissop = cookparms.getNode();
1009  if (!thissop) return getUoff();
1010  fpreal64 result;
1011  OP_Utils::evalOpParm(result, thissop, "uoff", cookparms.getCookTime(), 0);
1012  return result;
1013  }
1014  UT_Vector2D getTextu() const { return myTextu; }
1015  void setTextu(UT_Vector2D val) { myTextu = val; }
1017  {
1018  SOP_Node *thissop = cookparms.getNode();
1019  if (!thissop) return getTextu();
1021  OP_Utils::evalOpParm(result, thissop, "textu", cookparms.getCookTime(), 0);
1022  return result;
1023  }
1024  UseTextVAttrib getUseTextVAttrib() const { return UseTextVAttrib(myUseTextVAttrib); }
1025  void setUseTextVAttrib(UseTextVAttrib val) { myUseTextVAttrib = int64(val); }
1027  {
1028  SOP_Node *thissop = cookparms.getNode();
1029  if (!thissop) return getUseTextVAttrib();
1030  int64 result;
1031  OP_Utils::evalOpParm(result, thissop, "usetextvattrib", cookparms.getCookTime(), 0);
1032  return UseTextVAttrib(result);
1033  }
1034  const UT_StringHolder & getTextVAttrib() const { return myTextVAttrib; }
1035  void setTextVAttrib(const UT_StringHolder & val) { myTextVAttrib = val; }
1037  {
1038  SOP_Node *thissop = cookparms.getNode();
1039  if (!thissop) return getTextVAttrib();
1041  OP_Utils::evalOpParm(result, thissop, "textvattrib", cookparms.getCookTime(), 0);
1042  return result;
1043  }
1044  UT_Vector2D getTextv() const { return myTextv; }
1045  void setTextv(UT_Vector2D val) { myTextv = val; }
1047  {
1048  SOP_Node *thissop = cookparms.getNode();
1049  if (!thissop) return getTextv();
1051  OP_Utils::evalOpParm(result, thissop, "textv", cookparms.getCookTime(), 0);
1052  return result;
1053  }
1054  UseUpAttrib getUseUpAttrib() const { return UseUpAttrib(myUseUpAttrib); }
1055  void setUseUpAttrib(UseUpAttrib val) { myUseUpAttrib = int64(val); }
1057  {
1058  SOP_Node *thissop = cookparms.getNode();
1059  if (!thissop) return getUseUpAttrib();
1060  int64 result;
1061  OP_Utils::evalOpParm(result, thissop, "upenable", cookparms.getCookTime(), 0);
1062  return UseUpAttrib(result);
1063  }
1064  UT_Vector3D getUpvector() const { return myUpvector; }
1065  void setUpvector(UT_Vector3D val) { myUpvector = val; }
1067  {
1068  SOP_Node *thissop = cookparms.getNode();
1069  if (!thissop) return getUpvector();
1071  OP_Utils::evalOpParm(result, thissop, "upvector", cookparms.getCookTime(), 0);
1072  return result;
1073  }
1074  const UT_StringHolder & getUpAttrib() const { return myUpAttrib; }
1075  void setUpAttrib(const UT_StringHolder & val) { myUpAttrib = val; }
1077  {
1078  SOP_Node *thissop = cookparms.getNode();
1079  if (!thissop) return getUpAttrib();
1081  OP_Utils::evalOpParm(result, thissop, "upattrib", cookparms.getCookTime(), 0);
1082  return result;
1083  }
1084 
1085 private:
1086  UT_StringHolder myGroup;
1087  fpreal64 myRadius;
1088  int64 myUseScaleAttrib;
1089  UT_StringHolder myScaleAttrib;
1090  bool myJointcorrect;
1091  fpreal64 myMaxscale;
1092  int64 mySmooth;
1093  int64 myUseSmoothAttrib;
1094  UT_StringHolder mySmoothAttrib;
1095  int64 myMaxValence;
1096  int64 myDiv;
1097  int64 myUseDivAttrib;
1098  UT_StringHolder myDivAttrib;
1099  int64 mySegs;
1100  int64 myUseSegsAttrib;
1101  UT_StringHolder mySegsAttrib;
1102  bool myUseSegScale;
1103  UT_Vector2D mySegScale;
1104  bool myDotexture;
1105  fpreal64 myUoff;
1106  UT_Vector2D myTextu;
1107  int64 myUseTextVAttrib;
1108  UT_StringHolder myTextVAttrib;
1109  UT_Vector2D myTextv;
1110  int64 myUseUpAttrib;
1111  UT_Vector3D myUpvector;
1112  UT_StringHolder myUpAttrib;
1113 
1114 };
void setGroup(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Vector2I &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
void setSegScale(UT_Vector2D val)
static void saveData(std::ostream &os, UT_Vector4D v)
bool opUseSegScale(const SOP_NodeVerb::CookParms &cookparms) const
void setJointcorrect(bool val)
static void saveData(std::ostream &os, UT_Vector3D v)
bool getJointcorrect() const
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
static void saveData(std::ostream &os, fpreal64 v)
bool isParmColorRamp(exint idx) const override
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
static void saveData(std::ostream &os, bool v)
T clampMaxValue(fpreal maxvalue, const T &src) const
Definition: OP_NodeParms.h:315
exint bread(int32 *buffer, exint asize=1)
GLboolean * data
Definition: glcorearb.h:131
GT_API const UT_StringHolder time
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector4.h:493
const GLdouble * v
Definition: glcorearb.h:837
fpreal getTime() const
Definition: OP_Context.h:62
UT_StringHolder opScaleAttrib(const SOP_NodeVerb::CookParms &cookparms) const
UseUpAttrib getUseUpAttrib() const
UT_Vector2T< fpreal64 > UT_Vector2D
int64 opDiv(const SOP_NodeVerb::CookParms &cookparms) const
UseSegsAttrib getUseSegsAttrib() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void setUseDivAttrib(UseDivAttrib val)
static void loadData(UT_IStream &is, UT_Vector3D &v)
const OP_Context & context() const
Definition: OP_NodeParms.h:97
static void loadData(UT_IStream &is, UT_Matrix2D &v)
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector3.h:667
int64 exint
Definition: SYS_Types.h:125
const UT_StringHolder & getUpAttrib() const
SYS_FORCE_INLINE const char * buffer() const
GLdouble s
Definition: glad.h:3009
UseSmoothAttrib opUseSmoothAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
static void loadData(UT_IStream &is, UT_Vector3I &v)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
An output stream object that owns its own string buffer storage.
UseSmoothAttrib getUseSmoothAttrib() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
void setUpvector(UT_Vector3D val)
fpreal64 opRadius(const SOP_NodeVerb::CookParms &cookparms) const
int64 getSmooth() const
**But if you need a result
Definition: thread.h:613
void copyFrom(const OP_NodeParms *src) override
const UT_StringHolder & getDivAttrib() const
UT_StringHolder opSegsAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector2D &v)
static void saveData(std::ostream &os, int64 v)
static void saveData(std::ostream &os, UT_Vector2D v)
T clampMinValue(fpreal minvalue, const T &src) const
Definition: OP_NodeParms.h:308
UT_StringHolder opDivAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
exint nodeIdx() const
Definition: OP_NodeParms.h:95
static PRM_DataItemHandle parseBinary(const char *type, UT_IStream &is)
const UT_WorkBuffer & str()
Returns a read-only reference to the underlying UT_WorkBuffer.
void setSmooth(int64 val)
bool operator==(const SOP_PolyWireParms &src) const
UseTextVAttrib getUseTextVAttrib() const
static void loadData(UT_IStream &is, UT_Matrix4D &v)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
fpreal64 opUoff(const SOP_NodeVerb::CookParms &cookparms) const
int64 getMaxValence() const
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
const UT_StringHolder & getTextVAttrib() const
double fpreal64
Definition: SYS_Types.h:201
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
int64 opMaxValence(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, int64 &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
static void saveData(std::ostream &os, UT_Matrix2D v)
int64 getSegs() const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
UT_Vector2D getTextv() const
static void loadData(UT_IStream &is, UT_Vector4I &v)
bool getUseSegScale() const
const UT_StringHolder & getSmoothAttrib() const
void setTextu(UT_Vector2D val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
void setUseSegsAttrib(UseSegsAttrib val)
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void setDotexture(bool val)
exint length() const
int64 opSegs(const SOP_NodeVerb::CookParms &cookparms) const
void setDiv(int64 val)
bool load(UT_IStream &is)
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
void setUseScaleAttrib(UseScaleAttrib val)
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
static void loadData(UT_IStream &is, UT_StringHolder &v)
UseTextVAttrib opUseTextVAttrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D opSegScale(const SOP_NodeVerb::CookParms &cookparms) const
void setRadius(fpreal64 val)
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
const UT_StringHolder & getSegsAttrib() const
fpreal64 getRadius() const
static void loadData(UT_IStream &is, UT_Matrix3D &v)
UT_Vector2D opTextv(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opMaxscale(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opSmoothAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector4D &v)
long long int64
Definition: SYS_Types.h:116
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3T< fpreal64 > UT_Vector3D
fpreal64 getMaxscale() const
int64 getDiv() const
static void saveData(std::ostream &os, UT_StringHolder s)
const char * getNestParmName(TempIndex fieldnum) const override
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
static void loadData(UT_IStream &is, fpreal64 &v)
bool opDotexture(const SOP_NodeVerb::CookParms &cookparms) const
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
UT_Vector3D opUpvector(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
UT_Vector2D getSegScale() const
GT_API const UT_StringHolder version
const UT_StringHolder & getScaleAttrib() const
int64 opSmooth(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
exint getNestNumParms(TempIndex idx) const override
void setUpAttrib(const UT_StringHolder &val)
void setUseTextVAttrib(UseTextVAttrib val)
void setSegsAttrib(const UT_StringHolder &val)
void coerceValue(T &result, const S &src) const
Definition: OP_NodeParms.h:301
void setSmoothAttrib(const UT_StringHolder &val)
fpreal64 fpreal
Definition: SYS_Types.h:277
ParmType getNestParmType(TempIndex fieldnum) const override
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
Utility class for containing a color ramp.
Definition: UT_Ramp.h:88
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
static void saveData(std::ostream &os, UT_Matrix4D v)
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
void setUseSmoothAttrib(UseSmoothAttrib val)
void setUseUpAttrib(UseUpAttrib val)
GLuint GLfloat * val
Definition: glcorearb.h:1608
static void saveData(std::ostream &os, PRM_DataItemHandle s)
void setSegs(int64 val)
void setDivAttrib(const UT_StringHolder &val)
#define SOP_API
Definition: SOP_API.h:10
void setTextv(UT_Vector2D val)
UT_StringHolder opTextVAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void save(std::ostream &os) const
void setScaleAttrib(const UT_StringHolder &val)
UT_StringHolder opUpAttrib(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getUoff() const
UseSegsAttrib opUseSegsAttrib(const SOP_NodeVerb::CookParms &cookparms) const
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
void loadFromOpSubclass(const LoadParms &loadparms) override
UseDivAttrib opUseDivAttrib(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
UseScaleAttrib getUseScaleAttrib() const
const char * findChar(int c) const
Definition: UT_String.h:1385
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
void setUoff(fpreal64 val)
Definition: core.h:1131
UseScaleAttrib opUseScaleAttrib(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
UT_Vector2D opTextu(const SOP_NodeVerb::CookParms &cookparms) const
GLboolean r
Definition: glcorearb.h:1222
bool opJointcorrect(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector2D getTextu() const
const UT_StringHolder & getGroup() const
static void loadData(UT_IStream &is, bool &v)
void setUseSegScale(bool val)
void setMaxValence(int64 val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
bool operator!=(const SOP_PolyWireParms &src) const
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
void setMaxscale(fpreal64 val)
bool getDotexture() const
type
Definition: core.h:1059
void setTextVAttrib(const UT_StringHolder &val)
UT_Vector3D getUpvector() const
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:89
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
UseUpAttrib opUseUpAttrib(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE bool isstring() const
OP_NodeParms & operator=(const OP_NodeParms &)=default
static void saveData(std::ostream &os, UT_Matrix3D v)
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
GLenum src
Definition: glcorearb.h:1793
UseDivAttrib getUseDivAttrib() const
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override