HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_Sort.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_SortEnums
24 {
25  enum class Ptsort
26  {
27  NONE = 0,
28  VTXORD,
29  BYX,
30  BYY,
31  BYZ,
32  REV,
33  SEED,
34  SHIF,
35  PROX,
36  VECTOR,
37  EXPRESSION,
38  SPATIAL,
39  ATTRIBUTE,
40  PRIMINDEX
41  };
42  enum class Primsort
43  {
44  NONE = 0,
45  BYX,
46  BYY,
47  BYZ,
48  REV,
49  SEED,
50  SHIF,
51  PROX,
52  VECTOR,
53  EXPRESSION,
54  SPATIAL,
55  ATTRIBUTE
56  };
57 }
58 
59 
61 {
62 public:
63  static int version() { return 1; }
64 
66  {
67  myPtgroup = ""_UTsh;
68  myPtsort = 0;
69  myPointseed = 0;
70  myPointoffset = 0;
71  myPointprox = UT_Vector3D(0,0,0);
72  myPointobjpath = ""_UTsh;
73  myPointdir = UT_Vector3D(0,1,0);
74  myPointexpr = 0;
75  myPointattrib = ""_UTsh;
76  myPointattribcomp = 0;
77  myPointreverse = false;
78  myPrimgroup = ""_UTsh;
79  myPrimsort = 0;
80  myPrimseed = 0;
81  myPrimoffset = 0;
82  myPrimprox = UT_Vector3D(0,0,0);
83  myPrimobjpath = ""_UTsh;
84  myPrimdir = UT_Vector3D(0,1,0);
85  myPrimexpr = 0;
86  myPrimattrib = ""_UTsh;
87  myPrimattribcomp = 0;
88  myPrimreverse = false;
89  myVertexPrimOrder = true;
90 
91  }
92 
93  explicit SOP_SortParms(const SOP_SortParms &) = default;
94  SOP_SortParms &operator=(const SOP_SortParms &) = default;
95  SOP_SortParms(SOP_SortParms &&) noexcept = default;
96  SOP_SortParms &operator=(SOP_SortParms &&) noexcept = default;
97 
98  ~SOP_SortParms() override {}
99 
100  bool operator==(const SOP_SortParms &src) const
101  {
102  if (myPtgroup != src.myPtgroup) return false;
103  if (myPtsort != src.myPtsort) return false;
104  if (myPointseed != src.myPointseed) return false;
105  if (myPointoffset != src.myPointoffset) return false;
106  if (myPointprox != src.myPointprox) return false;
107  if (myPointobjpath != src.myPointobjpath) return false;
108  if (myPointdir != src.myPointdir) return false;
109  if (myPointexpr != src.myPointexpr) return false;
110  if (myPointattrib != src.myPointattrib) return false;
111  if (myPointattribcomp != src.myPointattribcomp) return false;
112  if (myPointreverse != src.myPointreverse) return false;
113  if (myPrimgroup != src.myPrimgroup) return false;
114  if (myPrimsort != src.myPrimsort) return false;
115  if (myPrimseed != src.myPrimseed) return false;
116  if (myPrimoffset != src.myPrimoffset) return false;
117  if (myPrimprox != src.myPrimprox) return false;
118  if (myPrimobjpath != src.myPrimobjpath) return false;
119  if (myPrimdir != src.myPrimdir) return false;
120  if (myPrimexpr != src.myPrimexpr) return false;
121  if (myPrimattrib != src.myPrimattrib) return false;
122  if (myPrimattribcomp != src.myPrimattribcomp) return false;
123  if (myPrimreverse != src.myPrimreverse) return false;
124  if (myVertexPrimOrder != src.myVertexPrimOrder) return false;
125 
126  return true;
127  }
128  bool operator!=(const SOP_SortParms &src) const
129  {
130  return !operator==(src);
131  }
134 
135 
136 
137  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
138  {
139  myPtgroup = ""_UTsh;
140  if (true)
141  graph->evalOpParm(myPtgroup, nodeidx, "ptgroup", time, 0);
142  myPtsort = 0;
143  if (true)
144  graph->evalOpParm(myPtsort, nodeidx, "ptsort", time, 0);
145  myPointseed = 0;
146  if (true && ( (true&&!(((int64(getPtsort())!=6)))) ) )
147  graph->evalOpParm(myPointseed, nodeidx, "pointseed", time, 0);
148  myPointoffset = 0;
149  if (true && ( (true&&!(((int64(getPtsort())!=7)))) ) )
150  graph->evalOpParm(myPointoffset, nodeidx, "pointoffset", time, 0);
151  myPointprox = UT_Vector3D(0,0,0);
152  if (true && ( (true&&!(((int64(getPtsort())!=8)))) ) )
153  graph->evalOpParm(myPointprox, nodeidx, "pointprox", time, 0);
154  myPointobjpath = ""_UTsh;
155  if (true && ( (true&&!(((int64(getPtsort())!=9)))) ) )
156  graph->evalOpParm(myPointobjpath, nodeidx, "pointobjpath", time, 0);
157  myPointdir = UT_Vector3D(0,1,0);
158  if (true && ( (true&&!(((int64(getPtsort())!=9)))) ) )
159  graph->evalOpParm(myPointdir, nodeidx, "pointdir", time, 0);
160  myPointexpr = 0;
161  if (true && ( (true&&!(((int64(getPtsort())!=10)))) ) )
162  graph->evalOpParm(myPointexpr, nodeidx, "pointexpr", time, 0);
163  myPointattrib = ""_UTsh;
164  if (true && ( (true&&!(((int64(getPtsort())!=12)))) ) )
165  graph->evalOpParm(myPointattrib, nodeidx, "pointattrib", time, 0);
166  myPointattribcomp = 0;
167  if (true && ( (true&&!(((int64(getPtsort())!=12)))) ) )
168  graph->evalOpParm(myPointattribcomp, nodeidx, "pointattribcomp", time, 0);
169  myPointreverse = false;
170  if (true)
171  graph->evalOpParm(myPointreverse, nodeidx, "pointreverse", time, 0);
172  myPrimgroup = ""_UTsh;
173  if (true)
174  graph->evalOpParm(myPrimgroup, nodeidx, "primgroup", time, 0);
175  myPrimsort = 0;
176  if (true)
177  graph->evalOpParm(myPrimsort, nodeidx, "primsort", time, 0);
178  myPrimseed = 0;
179  if (true && ( (true&&!(((int64(getPrimsort())!=5)))) ) )
180  graph->evalOpParm(myPrimseed, nodeidx, "primseed", time, 0);
181  myPrimoffset = 0;
182  if (true && ( (true&&!(((int64(getPrimsort())!=6)))) ) )
183  graph->evalOpParm(myPrimoffset, nodeidx, "primoffset", time, 0);
184  myPrimprox = UT_Vector3D(0,0,0);
185  if (true && ( (true&&!(((int64(getPrimsort())!=7)))) ) )
186  graph->evalOpParm(myPrimprox, nodeidx, "primprox", time, 0);
187  myPrimobjpath = ""_UTsh;
188  if (true && ( (true&&!(((int64(getPrimsort())!=8)))) ) )
189  graph->evalOpParm(myPrimobjpath, nodeidx, "primobjpath", time, 0);
190  myPrimdir = UT_Vector3D(0,1,0);
191  if (true && ( (true&&!(((int64(getPrimsort())!=8)))) ) )
192  graph->evalOpParm(myPrimdir, nodeidx, "primdir", time, 0);
193  myPrimexpr = 0;
194  if (true && ( (true&&!(((int64(getPrimsort())!=9)))) ) )
195  graph->evalOpParm(myPrimexpr, nodeidx, "primexpr", time, 0);
196  myPrimattrib = ""_UTsh;
197  if (true && ( (true&&!(((int64(getPrimsort())!=11)))) ) )
198  graph->evalOpParm(myPrimattrib, nodeidx, "primattrib", time, 0);
199  myPrimattribcomp = 0;
200  if (true && ( (true&&!(((int64(getPrimsort())!=11)))) ) )
201  graph->evalOpParm(myPrimattribcomp, nodeidx, "primattribcomp", time, 0);
202  myPrimreverse = false;
203  if (true)
204  graph->evalOpParm(myPrimreverse, nodeidx, "primreverse", time, 0);
205  myVertexPrimOrder = true;
206  if (true)
207  graph->evalOpParm(myVertexPrimOrder, nodeidx, "vertexprimorder", time, 0);
208 
209  }
210 
211 
212  void loadFromOpSubclass(const LoadParms &loadparms) override
213  {
214  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
215  }
216 
217 
218  void copyFrom(const OP_NodeParms *src) override
219  {
220  *this = *((const SOP_SortParms *)src);
221  }
222 
223  template <typename T>
224  void
225  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
226  {
227  if (idx.size() < 1)
228  return;
229  UT_ASSERT(idx.size() == instance.size()+1);
230  if (idx.size() != instance.size()+1)
231  return;
232  switch (idx[0])
233  {
234  case 0:
235  coerceValue(value, myPtgroup);
236  break;
237  case 1:
238  coerceValue(value, myPtsort);
239  break;
240  case 2:
241  coerceValue(value, myPointseed);
242  break;
243  case 3:
244  coerceValue(value, myPointoffset);
245  break;
246  case 4:
247  coerceValue(value, myPointprox);
248  break;
249  case 5:
250  coerceValue(value, myPointobjpath);
251  break;
252  case 6:
253  coerceValue(value, myPointdir);
254  break;
255  case 7:
256  coerceValue(value, myPointexpr);
257  break;
258  case 8:
259  coerceValue(value, myPointattrib);
260  break;
261  case 9:
262  coerceValue(value, myPointattribcomp);
263  break;
264  case 10:
265  coerceValue(value, myPointreverse);
266  break;
267  case 11:
268  coerceValue(value, myPrimgroup);
269  break;
270  case 12:
271  coerceValue(value, myPrimsort);
272  break;
273  case 13:
274  coerceValue(value, myPrimseed);
275  break;
276  case 14:
277  coerceValue(value, myPrimoffset);
278  break;
279  case 15:
280  coerceValue(value, myPrimprox);
281  break;
282  case 16:
283  coerceValue(value, myPrimobjpath);
284  break;
285  case 17:
286  coerceValue(value, myPrimdir);
287  break;
288  case 18:
289  coerceValue(value, myPrimexpr);
290  break;
291  case 19:
292  coerceValue(value, myPrimattrib);
293  break;
294  case 20:
295  coerceValue(value, myPrimattribcomp);
296  break;
297  case 21:
298  coerceValue(value, myPrimreverse);
299  break;
300  case 22:
301  coerceValue(value, myVertexPrimOrder);
302  break;
303 
304  }
305  }
306 
307  bool isParmColorRamp(exint idx) const override
308  {
309  switch (idx)
310  {
311 
312  }
313  return false;
314  }
315 
316  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
317  { doGetParmValue(idx, instance, value); }
318  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
319  { doGetParmValue(idx, instance, value); }
320  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
321  { doGetParmValue(idx, instance, value); }
322  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
323  { doGetParmValue(idx, instance, value); }
324  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
325  { doGetParmValue(idx, instance, value); }
326  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
327  { doGetParmValue(idx, instance, value); }
328  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
329  { doGetParmValue(idx, instance, value); }
330  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
331  { doGetParmValue(idx, instance, value); }
332  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
333  { doGetParmValue(idx, instance, value); }
334  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
335  { doGetParmValue(idx, instance, value); }
336  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
337  { doGetParmValue(idx, instance, value); }
338 
339  template <typename T>
340  void
341  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
342  {
343  if (idx.size() < 1)
344  return;
345  UT_ASSERT(idx.size() == instance.size()+1);
346  if (idx.size() != instance.size()+1)
347  return;
348  switch (idx[0])
349  {
350  case 0:
351  coerceValue(myPtgroup, ( ( value ) ));
352  break;
353  case 1:
354  coerceValue(myPtsort, clampMinValue(0, clampMaxValue(13, value ) ));
355  break;
356  case 2:
357  coerceValue(myPointseed, ( ( value ) ));
358  break;
359  case 3:
360  coerceValue(myPointoffset, ( ( value ) ));
361  break;
362  case 4:
363  coerceValue(myPointprox, ( ( value ) ));
364  break;
365  case 5:
366  coerceValue(myPointobjpath, ( ( value ) ));
367  break;
368  case 6:
369  coerceValue(myPointdir, ( ( value ) ));
370  break;
371  case 7:
372  coerceValue(myPointexpr, ( ( value ) ));
373  break;
374  case 8:
375  coerceValue(myPointattrib, ( ( value ) ));
376  break;
377  case 9:
378  coerceValue(myPointattribcomp, ( ( value ) ));
379  break;
380  case 10:
381  coerceValue(myPointreverse, ( ( value ) ));
382  break;
383  case 11:
384  coerceValue(myPrimgroup, ( ( value ) ));
385  break;
386  case 12:
387  coerceValue(myPrimsort, clampMinValue(0, clampMaxValue(11, value ) ));
388  break;
389  case 13:
390  coerceValue(myPrimseed, ( ( value ) ));
391  break;
392  case 14:
393  coerceValue(myPrimoffset, ( ( value ) ));
394  break;
395  case 15:
396  coerceValue(myPrimprox, ( ( value ) ));
397  break;
398  case 16:
399  coerceValue(myPrimobjpath, ( ( value ) ));
400  break;
401  case 17:
402  coerceValue(myPrimdir, ( ( value ) ));
403  break;
404  case 18:
405  coerceValue(myPrimexpr, ( ( value ) ));
406  break;
407  case 19:
408  coerceValue(myPrimattrib, ( ( value ) ));
409  break;
410  case 20:
411  coerceValue(myPrimattribcomp, ( ( value ) ));
412  break;
413  case 21:
414  coerceValue(myPrimreverse, ( ( value ) ));
415  break;
416  case 22:
417  coerceValue(myVertexPrimOrder, ( ( value ) ));
418  break;
419 
420  }
421  }
422 
423  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
424  { doSetParmValue(idx, instance, value); }
425  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
426  { doSetParmValue(idx, instance, value); }
427  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
428  { doSetParmValue(idx, instance, value); }
429  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
430  { doSetParmValue(idx, instance, value); }
431  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
432  { doSetParmValue(idx, instance, value); }
433  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
434  { doSetParmValue(idx, instance, value); }
435  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
436  { doSetParmValue(idx, instance, value); }
437  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
438  { doSetParmValue(idx, instance, value); }
439  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
440  { doSetParmValue(idx, instance, value); }
441  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
442  { doSetParmValue(idx, instance, value); }
443  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
444  { doSetParmValue(idx, instance, value); }
445 
446  exint getNestNumParms(TempIndex idx) const override
447  {
448  if (idx.size() == 0)
449  return 23;
450  switch (idx[0])
451  {
452 
453  }
454  // Invalid
455  return 0;
456  }
457 
458  const char *getNestParmName(TempIndex fieldnum) const override
459  {
460  if (fieldnum.size() < 1)
461  return 0;
462  switch (fieldnum[0])
463  {
464  case 0:
465  return "ptgroup";
466  case 1:
467  return "ptsort";
468  case 2:
469  return "pointseed";
470  case 3:
471  return "pointoffset";
472  case 4:
473  return "pointprox";
474  case 5:
475  return "pointobjpath";
476  case 6:
477  return "pointdir";
478  case 7:
479  return "pointexpr";
480  case 8:
481  return "pointattrib";
482  case 9:
483  return "pointattribcomp";
484  case 10:
485  return "pointreverse";
486  case 11:
487  return "primgroup";
488  case 12:
489  return "primsort";
490  case 13:
491  return "primseed";
492  case 14:
493  return "primoffset";
494  case 15:
495  return "primprox";
496  case 16:
497  return "primobjpath";
498  case 17:
499  return "primdir";
500  case 18:
501  return "primexpr";
502  case 19:
503  return "primattrib";
504  case 20:
505  return "primattribcomp";
506  case 21:
507  return "primreverse";
508  case 22:
509  return "vertexprimorder";
510 
511  }
512  return 0;
513  }
514 
515  ParmType getNestParmType(TempIndex fieldnum) const override
516  {
517  if (fieldnum.size() < 1)
518  return PARM_UNSUPPORTED;
519  switch (fieldnum[0])
520  {
521  case 0:
522  return PARM_STRING;
523  case 1:
524  return PARM_INTEGER;
525  case 2:
526  return PARM_INTEGER;
527  case 3:
528  return PARM_INTEGER;
529  case 4:
530  return PARM_VECTOR3;
531  case 5:
532  return PARM_STRING;
533  case 6:
534  return PARM_VECTOR3;
535  case 7:
536  return PARM_FLOAT;
537  case 8:
538  return PARM_STRING;
539  case 9:
540  return PARM_INTEGER;
541  case 10:
542  return PARM_INTEGER;
543  case 11:
544  return PARM_STRING;
545  case 12:
546  return PARM_INTEGER;
547  case 13:
548  return PARM_INTEGER;
549  case 14:
550  return PARM_INTEGER;
551  case 15:
552  return PARM_VECTOR3;
553  case 16:
554  return PARM_STRING;
555  case 17:
556  return PARM_VECTOR3;
557  case 18:
558  return PARM_FLOAT;
559  case 19:
560  return PARM_STRING;
561  case 20:
562  return PARM_INTEGER;
563  case 21:
564  return PARM_INTEGER;
565  case 22:
566  return PARM_INTEGER;
567 
568  }
569  return PARM_UNSUPPORTED;
570  }
571 
572  // Boiler plate to load individual types.
573  static void loadData(UT_IStream &is, int64 &v)
574  { is.bread(&v, 1); }
575  static void loadData(UT_IStream &is, bool &v)
576  { int64 iv; is.bread(&iv, 1); v = iv; }
577  static void loadData(UT_IStream &is, fpreal64 &v)
578  { is.bread<fpreal64>(&v, 1); }
579  static void loadData(UT_IStream &is, UT_Vector2D &v)
580  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
581  static void loadData(UT_IStream &is, UT_Vector3D &v)
582  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
583  is.bread<fpreal64>(&v.z(), 1); }
584  static void loadData(UT_IStream &is, UT_Vector4D &v)
585  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
586  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
587  static void loadData(UT_IStream &is, UT_Matrix2D &v)
588  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
589  static void loadData(UT_IStream &is, UT_Matrix3D &v)
590  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
591  static void loadData(UT_IStream &is, UT_Matrix4D &v)
592  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
593  static void loadData(UT_IStream &is, UT_Vector2I &v)
594  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
595  static void loadData(UT_IStream &is, UT_Vector3I &v)
596  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
597  is.bread<int64>(&v.z(), 1); }
598  static void loadData(UT_IStream &is, UT_Vector4I &v)
599  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
600  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
602  { is.bread(v); }
604  { UT_StringHolder rampdata;
605  loadData(is, rampdata);
606  if (rampdata.isstring())
607  {
608  v.reset(new UT_Ramp());
609  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
610  v->load(istr);
611  }
612  else v.reset();
613  }
616  loadData(is, data);
617  if (data.isstring())
618  {
619  // Find the data type.
620  const char *colon = UT_StringWrap(data).findChar(':');
621  if (colon)
622  {
623  int typelen = colon - data.buffer();
625  type.strncpy(data.buffer(), typelen);
626  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
627 
628  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
629  }
630  }
631  else v.reset();
632  }
633 
634  static void saveData(std::ostream &os, int64 v)
635  { UTwrite(os, &v); }
636  static void saveData(std::ostream &os, bool v)
637  { int64 iv = v; UTwrite(os, &iv); }
638  static void saveData(std::ostream &os, fpreal64 v)
639  { UTwrite<fpreal64>(os, &v); }
640  static void saveData(std::ostream &os, UT_Vector2D v)
641  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
642  static void saveData(std::ostream &os, UT_Vector3D v)
643  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
644  UTwrite<fpreal64>(os, &v.z()); }
645  static void saveData(std::ostream &os, UT_Vector4D v)
646  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
647  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
648  static void saveData(std::ostream &os, UT_Matrix2D v)
650  static void saveData(std::ostream &os, UT_Matrix3D v)
652  static void saveData(std::ostream &os, UT_Matrix4D v)
654  static void saveData(std::ostream &os, UT_StringHolder s)
655  { UT_StringWrap(s).saveBinary(os); }
656  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
658  UT_OStringStream ostr;
659  if (s) s->save(ostr);
660  result = ostr.str();
661  saveData(os, result);
662  }
663  static void saveData(std::ostream &os, PRM_DataItemHandle s)
665  UT_OStringStream ostr;
666  if (s)
667  {
668  ostr << s->getDataTypeToken();
669  ostr << ":";
670  s->saveBinary(ostr);
671  }
672  result = ostr.str();
673  saveData(os, result);
674  }
675 
676 
677  void save(std::ostream &os) const
678  {
679  int32 v = version();
680  UTwrite(os, &v);
681  saveData(os, myPtgroup);
682  saveData(os, myPtsort);
683  saveData(os, myPointseed);
684  saveData(os, myPointoffset);
685  saveData(os, myPointprox);
686  saveData(os, myPointobjpath);
687  saveData(os, myPointdir);
688  saveData(os, myPointexpr);
689  saveData(os, myPointattrib);
690  saveData(os, myPointattribcomp);
691  saveData(os, myPointreverse);
692  saveData(os, myPrimgroup);
693  saveData(os, myPrimsort);
694  saveData(os, myPrimseed);
695  saveData(os, myPrimoffset);
696  saveData(os, myPrimprox);
697  saveData(os, myPrimobjpath);
698  saveData(os, myPrimdir);
699  saveData(os, myPrimexpr);
700  saveData(os, myPrimattrib);
701  saveData(os, myPrimattribcomp);
702  saveData(os, myPrimreverse);
703  saveData(os, myVertexPrimOrder);
704 
705  }
706 
707  bool load(UT_IStream &is)
708  {
709  int32 v;
710  is.bread(&v, 1);
711  if (version() != v)
712  {
713  // Fail incompatible versions
714  return false;
715  }
716  loadData(is, myPtgroup);
717  loadData(is, myPtsort);
718  loadData(is, myPointseed);
719  loadData(is, myPointoffset);
720  loadData(is, myPointprox);
721  loadData(is, myPointobjpath);
722  loadData(is, myPointdir);
723  loadData(is, myPointexpr);
724  loadData(is, myPointattrib);
725  loadData(is, myPointattribcomp);
726  loadData(is, myPointreverse);
727  loadData(is, myPrimgroup);
728  loadData(is, myPrimsort);
729  loadData(is, myPrimseed);
730  loadData(is, myPrimoffset);
731  loadData(is, myPrimprox);
732  loadData(is, myPrimobjpath);
733  loadData(is, myPrimdir);
734  loadData(is, myPrimexpr);
735  loadData(is, myPrimattrib);
736  loadData(is, myPrimattribcomp);
737  loadData(is, myPrimreverse);
738  loadData(is, myVertexPrimOrder);
739 
740  return true;
741  }
742 
743  const UT_StringHolder & getPtgroup() const { return myPtgroup; }
744  void setPtgroup(const UT_StringHolder & val) { myPtgroup = val; }
746  {
747  SOP_Node *thissop = cookparms.getNode();
748  if (!thissop) return getPtgroup();
750  OP_Utils::evalOpParm(result, thissop, "ptgroup", cookparms.getCookTime(), 0);
751  return result;
752  }
753  Ptsort getPtsort() const { return Ptsort(myPtsort); }
754  void setPtsort(Ptsort val) { myPtsort = int64(val); }
755  Ptsort opPtsort(const SOP_NodeVerb::CookParms &cookparms) const
756  {
757  SOP_Node *thissop = cookparms.getNode();
758  if (!thissop) return getPtsort();
759  int64 result;
760  OP_Utils::evalOpParm(result, thissop, "ptsort", cookparms.getCookTime(), 0);
761  return Ptsort(result);
762  }
763  int64 getPointseed() const { return myPointseed; }
764  void setPointseed(int64 val) { myPointseed = val; }
765  int64 opPointseed(const SOP_NodeVerb::CookParms &cookparms) const
766  {
767  SOP_Node *thissop = cookparms.getNode();
768  if (!thissop) return getPointseed();
769  int64 result;
770  OP_Utils::evalOpParm(result, thissop, "pointseed", cookparms.getCookTime(), 0);
771  return result;
772  }
773  int64 getPointoffset() const { return myPointoffset; }
774  void setPointoffset(int64 val) { myPointoffset = val; }
776  {
777  SOP_Node *thissop = cookparms.getNode();
778  if (!thissop) return getPointoffset();
779  int64 result;
780  OP_Utils::evalOpParm(result, thissop, "pointoffset", cookparms.getCookTime(), 0);
781  return result;
782  }
783  UT_Vector3D getPointprox() const { return myPointprox; }
784  void setPointprox(UT_Vector3D val) { myPointprox = val; }
786  {
787  SOP_Node *thissop = cookparms.getNode();
788  if (!thissop) return getPointprox();
790  OP_Utils::evalOpParm(result, thissop, "pointprox", cookparms.getCookTime(), 0);
791  return result;
792  }
793  const UT_StringHolder & getPointobjpath() const { return myPointobjpath; }
794  void setPointobjpath(const UT_StringHolder & val) { myPointobjpath = val; }
796  {
797  SOP_Node *thissop = cookparms.getNode();
798  if (!thissop) return getPointobjpath();
800  OP_Utils::evalOpParm(result, thissop, "pointobjpath", cookparms.getCookTime(), 0);
801  return result;
802  }
803  UT_Vector3D getPointdir() const { return myPointdir; }
804  void setPointdir(UT_Vector3D val) { myPointdir = val; }
806  {
807  SOP_Node *thissop = cookparms.getNode();
808  if (!thissop) return getPointdir();
810  OP_Utils::evalOpParm(result, thissop, "pointdir", cookparms.getCookTime(), 0);
811  return result;
812  }
813  fpreal64 getPointexpr() const { return myPointexpr; }
814  void setPointexpr(fpreal64 val) { myPointexpr = val; }
816  {
817  SOP_Node *thissop = cookparms.getNode();
818  if (!thissop) return getPointexpr();
820  OP_Utils::evalOpParm(result, thissop, "pointexpr", cookparms.getCookTime(), 0);
821  return result;
822  }
823  const UT_StringHolder & getPointattrib() const { return myPointattrib; }
824  void setPointattrib(const UT_StringHolder & val) { myPointattrib = val; }
826  {
827  SOP_Node *thissop = cookparms.getNode();
828  if (!thissop) return getPointattrib();
830  OP_Utils::evalOpParm(result, thissop, "pointattrib", cookparms.getCookTime(), 0);
831  return result;
832  }
833  int64 getPointattribcomp() const { return myPointattribcomp; }
834  void setPointattribcomp(int64 val) { myPointattribcomp = val; }
836  {
837  SOP_Node *thissop = cookparms.getNode();
838  if (!thissop) return getPointattribcomp();
839  int64 result;
840  OP_Utils::evalOpParm(result, thissop, "pointattribcomp", cookparms.getCookTime(), 0);
841  return result;
842  }
843  bool getPointreverse() const { return myPointreverse; }
844  void setPointreverse(bool val) { myPointreverse = val; }
845  bool opPointreverse(const SOP_NodeVerb::CookParms &cookparms) const
846  {
847  SOP_Node *thissop = cookparms.getNode();
848  if (!thissop) return getPointreverse();
849  bool result;
850  OP_Utils::evalOpParm(result, thissop, "pointreverse", cookparms.getCookTime(), 0);
851  return result;
852  }
853  const UT_StringHolder & getPrimgroup() const { return myPrimgroup; }
854  void setPrimgroup(const UT_StringHolder & val) { myPrimgroup = val; }
856  {
857  SOP_Node *thissop = cookparms.getNode();
858  if (!thissop) return getPrimgroup();
860  OP_Utils::evalOpParm(result, thissop, "primgroup", cookparms.getCookTime(), 0);
861  return result;
862  }
863  Primsort getPrimsort() const { return Primsort(myPrimsort); }
864  void setPrimsort(Primsort val) { myPrimsort = int64(val); }
866  {
867  SOP_Node *thissop = cookparms.getNode();
868  if (!thissop) return getPrimsort();
869  int64 result;
870  OP_Utils::evalOpParm(result, thissop, "primsort", cookparms.getCookTime(), 0);
871  return Primsort(result);
872  }
873  int64 getPrimseed() const { return myPrimseed; }
874  void setPrimseed(int64 val) { myPrimseed = val; }
875  int64 opPrimseed(const SOP_NodeVerb::CookParms &cookparms) const
876  {
877  SOP_Node *thissop = cookparms.getNode();
878  if (!thissop) return getPrimseed();
879  int64 result;
880  OP_Utils::evalOpParm(result, thissop, "primseed", cookparms.getCookTime(), 0);
881  return result;
882  }
883  int64 getPrimoffset() const { return myPrimoffset; }
884  void setPrimoffset(int64 val) { myPrimoffset = val; }
886  {
887  SOP_Node *thissop = cookparms.getNode();
888  if (!thissop) return getPrimoffset();
889  int64 result;
890  OP_Utils::evalOpParm(result, thissop, "primoffset", cookparms.getCookTime(), 0);
891  return result;
892  }
893  UT_Vector3D getPrimprox() const { return myPrimprox; }
894  void setPrimprox(UT_Vector3D val) { myPrimprox = val; }
896  {
897  SOP_Node *thissop = cookparms.getNode();
898  if (!thissop) return getPrimprox();
900  OP_Utils::evalOpParm(result, thissop, "primprox", cookparms.getCookTime(), 0);
901  return result;
902  }
903  const UT_StringHolder & getPrimobjpath() const { return myPrimobjpath; }
904  void setPrimobjpath(const UT_StringHolder & val) { myPrimobjpath = val; }
906  {
907  SOP_Node *thissop = cookparms.getNode();
908  if (!thissop) return getPrimobjpath();
910  OP_Utils::evalOpParm(result, thissop, "primobjpath", cookparms.getCookTime(), 0);
911  return result;
912  }
913  UT_Vector3D getPrimdir() const { return myPrimdir; }
914  void setPrimdir(UT_Vector3D val) { myPrimdir = val; }
916  {
917  SOP_Node *thissop = cookparms.getNode();
918  if (!thissop) return getPrimdir();
920  OP_Utils::evalOpParm(result, thissop, "primdir", cookparms.getCookTime(), 0);
921  return result;
922  }
923  fpreal64 getPrimexpr() const { return myPrimexpr; }
924  void setPrimexpr(fpreal64 val) { myPrimexpr = val; }
926  {
927  SOP_Node *thissop = cookparms.getNode();
928  if (!thissop) return getPrimexpr();
930  OP_Utils::evalOpParm(result, thissop, "primexpr", cookparms.getCookTime(), 0);
931  return result;
932  }
933  const UT_StringHolder & getPrimattrib() const { return myPrimattrib; }
934  void setPrimattrib(const UT_StringHolder & val) { myPrimattrib = val; }
936  {
937  SOP_Node *thissop = cookparms.getNode();
938  if (!thissop) return getPrimattrib();
940  OP_Utils::evalOpParm(result, thissop, "primattrib", cookparms.getCookTime(), 0);
941  return result;
942  }
943  int64 getPrimattribcomp() const { return myPrimattribcomp; }
944  void setPrimattribcomp(int64 val) { myPrimattribcomp = val; }
946  {
947  SOP_Node *thissop = cookparms.getNode();
948  if (!thissop) return getPrimattribcomp();
949  int64 result;
950  OP_Utils::evalOpParm(result, thissop, "primattribcomp", cookparms.getCookTime(), 0);
951  return result;
952  }
953  bool getPrimreverse() const { return myPrimreverse; }
954  void setPrimreverse(bool val) { myPrimreverse = val; }
955  bool opPrimreverse(const SOP_NodeVerb::CookParms &cookparms) const
956  {
957  SOP_Node *thissop = cookparms.getNode();
958  if (!thissop) return getPrimreverse();
959  bool result;
960  OP_Utils::evalOpParm(result, thissop, "primreverse", cookparms.getCookTime(), 0);
961  return result;
962  }
963  bool getVertexPrimOrder() const { return myVertexPrimOrder; }
964  void setVertexPrimOrder(bool val) { myVertexPrimOrder = val; }
965  bool opVertexPrimOrder(const SOP_NodeVerb::CookParms &cookparms) const
966  {
967  SOP_Node *thissop = cookparms.getNode();
968  if (!thissop) return getVertexPrimOrder();
969  bool result;
970  OP_Utils::evalOpParm(result, thissop, "vertexprimorder", cookparms.getCookTime(), 0);
971  return result;
972  }
973 
974 private:
975  UT_StringHolder myPtgroup;
976  int64 myPtsort;
977  int64 myPointseed;
978  int64 myPointoffset;
979  UT_Vector3D myPointprox;
980  UT_StringHolder myPointobjpath;
981  UT_Vector3D myPointdir;
982  fpreal64 myPointexpr;
983  UT_StringHolder myPointattrib;
984  int64 myPointattribcomp;
985  bool myPointreverse;
986  UT_StringHolder myPrimgroup;
987  int64 myPrimsort;
988  int64 myPrimseed;
989  int64 myPrimoffset;
990  UT_Vector3D myPrimprox;
991  UT_StringHolder myPrimobjpath;
992  UT_Vector3D myPrimdir;
993  fpreal64 myPrimexpr;
994  UT_StringHolder myPrimattrib;
995  int64 myPrimattribcomp;
996  bool myPrimreverse;
997  bool myVertexPrimOrder;
998 
999 };
void setPointreverse(bool val)
void setPointobjpath(const UT_StringHolder &val)
int64 opPrimattribcomp(const SOP_NodeVerb::CookParms &cookparms) const
bool getVertexPrimOrder() const
int64 getPointseed() const
static void saveData(std::ostream &os, UT_Matrix4D v)
UT_StringHolder opPrimgroup(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, int64 &v)
UT_Vector3D getPrimdir() const
void save(std::ostream &os) const
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
void setPrimreverse(bool val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
void setPointexpr(fpreal64 val)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
void setPtgroup(const UT_StringHolder &val)
T clampMaxValue(fpreal maxvalue, const T &src) const
Definition: OP_NodeParms.h:315
static void loadData(UT_IStream &is, bool &v)
static void loadData(UT_IStream &is, UT_StringHolder &v)
int64 opPointattribcomp(const SOP_NodeVerb::CookParms &cookparms) const
bool operator==(const SOP_SortParms &src) const
const UT_StringHolder & getPointobjpath() const
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
ParmType getNestParmType(TempIndex fieldnum) const override
static void saveData(std::ostream &os, fpreal64 v)
const OP_Context & context() const
Definition: OP_NodeParms.h:97
static void saveData(std::ostream &os, UT_Vector4D v)
fpreal64 getPrimexpr() const
Primsort opPrimsort(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
void setPointoffset(int64 val)
SYS_FORCE_INLINE const char * buffer() const
int64 getPointattribcomp() const
UT_Vector3D opPointprox(const SOP_NodeVerb::CookParms &cookparms) const
GLdouble s
Definition: glad.h:3009
static void saveData(std::ostream &os, UT_Matrix3D v)
void setPrimexpr(fpreal64 val)
int64 opPrimoffset(const SOP_NodeVerb::CookParms &cookparms) const
An output stream object that owns its own string buffer storage.
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
static void loadData(UT_IStream &is, UT_Vector4D &v)
UT_StringHolder opPrimobjpath(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
**But if you need a result
Definition: thread.h:613
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
bool opPrimreverse(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
static void loadData(UT_IStream &is, UT_Matrix2D &v)
Ptsort getPtsort() const
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
T clampMinValue(fpreal minvalue, const T &src) const
Definition: OP_NodeParms.h:308
void setPointattribcomp(int64 val)
void setPrimattribcomp(int64 val)
fpreal64 opPointexpr(const SOP_NodeVerb::CookParms &cookparms) const
Primsort getPrimsort() const
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.
static void loadData(UT_IStream &is, fpreal64 &v)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
UT_Vector3D opPointdir(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Matrix4D &v)
static void loadData(UT_IStream &is, UT_Vector3I &v)
double fpreal64
Definition: SYS_Types.h:201
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
bool opVertexPrimOrder(const SOP_NodeVerb::CookParms &cookparms) const
void setPointdir(UT_Vector3D val)
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
bool getPointreverse() const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
int64 opPointoffset(const SOP_NodeVerb::CookParms &cookparms) const
void setPrimseed(int64 val)
void copyFrom(const OP_NodeParms *src) override
static void saveData(std::ostream &os, UT_Vector3D v)
exint length() const
UT_Vector3D getPointprox() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
SYS_FORCE_INLINE const char * buffer() const
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
const UT_StringHolder & getPrimattrib() const
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
static void loadData(UT_IStream &is, UT_Vector4I &v)
int64 getPrimattribcomp() const
int64 getPrimseed() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
static int version()
static void saveData(std::ostream &os, UT_Vector2D v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
long long int64
Definition: SYS_Types.h:116
void setPrimdir(UT_Vector3D val)
int64 getPointoffset() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
Ptsort opPtsort(const SOP_NodeVerb::CookParms &cookparms) const
void setPointattrib(const UT_StringHolder &val)
UT_StringHolder opPrimattrib(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3T< fpreal64 > UT_Vector3D
bool load(UT_IStream &is)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
static void saveData(std::ostream &os, PRM_DataItemHandle s)
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
bool getPrimreverse() const
UT_Vector3D getPointdir() const
static void loadData(UT_IStream &is, UT_Vector2D &v)
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:296
void setPtsort(Ptsort val)
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
int64 opPrimseed(const SOP_NodeVerb::CookParms &cookparms) const
GT_API const UT_StringHolder version
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
int64 getPrimoffset() const
UT_Vector3D opPrimprox(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
const char * getNestParmName(TempIndex fieldnum) const override
const UT_StringHolder & getPointattrib() const
UT_StringHolder opPointattrib(const SOP_NodeVerb::CookParms &cookparms) const
const UT_StringHolder & getPrimgroup() const
void setPrimobjpath(const UT_StringHolder &val)
void setPrimoffset(int64 val)
void coerceValue(T &result, const S &src) const
Definition: OP_NodeParms.h:301
UT_StringHolder opPtgroup(const SOP_NodeVerb::CookParms &cookparms) const
void setPrimprox(UT_Vector3D val)
const UT_StringHolder & getPrimobjpath() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
int64 opPointseed(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 fpreal
Definition: SYS_Types.h:277
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
static void saveData(std::ostream &os, UT_Matrix2D v)
Utility class for containing a color ramp.
Definition: UT_Ramp.h:88
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
GLuint GLfloat * val
Definition: glcorearb.h:1608
void setPrimsort(Primsort val)
void setVertexPrimOrder(bool val)
#define SOP_API
Definition: SOP_API.h:10
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
static void saveData(std::ostream &os, int64 v)
fpreal64 opPrimexpr(const SOP_NodeVerb::CookParms &cookparms) const
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:361
bool opPointreverse(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, bool v)
void setPrimattrib(const UT_StringHolder &val)
void loadFromOpSubclass(const LoadParms &loadparms) override
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
const char * findChar(int c) const
Definition: UT_String.h:1385
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
Definition: core.h:1131
exint getNestNumParms(TempIndex idx) const override
static void saveData(std::ostream &os, UT_StringHolder s)
GLboolean r
Definition: glcorearb.h:1222
void setPrimgroup(const UT_StringHolder &val)
UT_Vector3D getPrimprox() const
static void loadData(UT_IStream &is, UT_Vector2I &v)
void setPointseed(int64 val)
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
void setPointprox(UT_Vector3D val)
type
Definition: core.h:1059
bool isParmColorRamp(exint idx) const override
bool operator!=(const SOP_SortParms &src) const
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
UT_StringHolder opPointobjpath(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: PRM_Parm.h:89
fpreal64 getPointexpr() const
UT_Vector3D opPrimdir(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
const UT_StringHolder & getPtgroup() const
SYS_FORCE_INLINE bool isstring() const
static void loadData(UT_IStream &is, UT_Vector3D &v)
OP_NodeParms & operator=(const OP_NodeParms &)=default
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override