HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SOP_Ray.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 <OP/OP_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_RayEnums
24 {
25  enum class Entity
26  {
27  PRIMITIVE = 0,
28  POINT
29  };
30 
32  getToken(Entity enum_value)
33  {
34  using namespace UT::Literal;
35  switch (enum_value) {
36  case Entity::PRIMITIVE: return "primitive"_sh;
37  case Entity::POINT: return "point"_sh;
38  default: UT_ASSERT(false); return ""_sh;
39  }
40  }
41 
42  enum class Method
43  {
44  MINIMUM = 0,
45  PROJECT
46  };
47 
49  getToken(Method enum_value)
50  {
51  using namespace UT::Literal;
52  switch (enum_value) {
53  case Method::MINIMUM: return "minimum"_sh;
54  case Method::PROJECT: return "project"_sh;
55  default: UT_ASSERT(false); return ""_sh;
56  }
57  }
58 
59  enum class DirMethod
60  {
61  VECTOR = 0,
62  NORMAL,
63  ATTRIBUTE
64  };
65 
67  getToken(DirMethod enum_value)
68  {
69  using namespace UT::Literal;
70  switch (enum_value) {
71  case DirMethod::VECTOR: return "vector"_sh;
72  case DirMethod::NORMAL: return "normal"_sh;
73  case DirMethod::ATTRIBUTE: return "attribute"_sh;
74  default: UT_ASSERT(false); return ""_sh;
75  }
76  }
77 
78  enum class Directiontype
79  {
80  OFF = 0,
81  ON,
83  };
84 
86  getToken(Directiontype enum_value)
87  {
88  using namespace UT::Literal;
89  switch (enum_value) {
90  case Directiontype::OFF: return "off"_sh;
91  case Directiontype::ON: return "on"_sh;
92  case Directiontype::BIDIRECTIONAL: return "bidirectional"_sh;
93  default: UT_ASSERT(false); return ""_sh;
94  }
95  }
96 
98  {
99  CLOSEST = 0,
100  FARTHEST
101  };
102 
105  {
106  using namespace UT::Literal;
107  switch (enum_value) {
108  case Bidirectionalresult::CLOSEST: return "closest"_sh;
109  case Bidirectionalresult::FARTHEST: return "farthest"_sh;
110  default: UT_ASSERT(false); return ""_sh;
111  }
112  }
113 
114  enum class Combinetype
115  {
116  AVERAGE = 0,
117  MEDIAN,
118  SHORTEST,
119  LONGEST
120  };
121 
123  getToken(Combinetype enum_value)
124  {
125  using namespace UT::Literal;
126  switch (enum_value) {
127  case Combinetype::AVERAGE: return "average"_sh;
128  case Combinetype::MEDIAN: return "median"_sh;
129  case Combinetype::SHORTEST: return "shortest"_sh;
130  case Combinetype::LONGEST: return "longest"_sh;
131  default: UT_ASSERT(false); return ""_sh;
132  }
133  }
134 
135 }
136 
137 
139 {
140 public:
141  static int version() { return 1; }
142 
144  {
145  myGroup = ""_UTsh;
146  myEntity = 0;
147  myCollision = ""_UTsh;
148  myMethod = 1;
149  myDirMethod = 1;
150  myDir = UT_Vector3D(0,0,0);
151  myDirAttrib = "N"_UTsh;
152  myDirectiontype = 0;
153  myBidirectionalresult = 0;
154  myDotrans = true;
155  myShowguide = true;
156  myLookfar = false;
157  myRtolerance = 0.01;
158  myScale = 1;
159  myLift = 0;
160  myBias = 0;
161  myMaxraydistcheck = false;
162  myMaxraydist = 0;
163  mySample = 1;
164  myJitter = 0;
165  mySeed = 1;
166  myCombinetype = 0;
167  myPutnml = false;
168  myPutdist = false;
169  myNewgrp = false;
170  myHitgrp = "rayHitGroup"_UTsh;
171  myUseprimnumattrib = false;
172  myPrimnumattrib = "hitprim"_UTsh;
173  myUseprimuvwattrib = false;
174  myPrimuvwattrib = "hitprimuv"_UTsh;
175  myGetptattribs = false;
176  myPtattribnames = "*"_UTsh;
177  myVertexattribnames = ""_UTsh;
178  myPrimitiveattribnames = ""_UTsh;
179  myDetailattribnames = ""_UTsh;
180  myGethitgroups = false;
181  myPtgroupnames = "*"_UTsh;
182  myVertexgroupnames = ""_UTsh;
183  myPrimitivegroupnames = ""_UTsh;
184 
185  }
186 
187  explicit SOP_RayParms(const SOP_RayParms &) = default;
188  SOP_RayParms &operator=(const SOP_RayParms &) = default;
189  SOP_RayParms(SOP_RayParms &&) noexcept = default;
190  SOP_RayParms &operator=(SOP_RayParms &&) noexcept = default;
191 
192  ~SOP_RayParms() override {}
193 
194  bool operator==(const SOP_RayParms &src) const
195  {
196  if (myGroup != src.myGroup) return false;
197  if (myEntity != src.myEntity) return false;
198  if (myCollision != src.myCollision) return false;
199  if (myMethod != src.myMethod) return false;
200  if (myDirMethod != src.myDirMethod) return false;
201  if (myDir != src.myDir) return false;
202  if (myDirAttrib != src.myDirAttrib) return false;
203  if (myDirectiontype != src.myDirectiontype) return false;
204  if (myBidirectionalresult != src.myBidirectionalresult) return false;
205  if (myDotrans != src.myDotrans) return false;
206  if (myShowguide != src.myShowguide) return false;
207  if (myLookfar != src.myLookfar) return false;
208  if (myRtolerance != src.myRtolerance) return false;
209  if (myScale != src.myScale) return false;
210  if (myLift != src.myLift) return false;
211  if (myBias != src.myBias) return false;
212  if (myMaxraydistcheck != src.myMaxraydistcheck) return false;
213  if (myMaxraydist != src.myMaxraydist) return false;
214  if (mySample != src.mySample) return false;
215  if (myJitter != src.myJitter) return false;
216  if (mySeed != src.mySeed) return false;
217  if (myCombinetype != src.myCombinetype) return false;
218  if (myPutnml != src.myPutnml) return false;
219  if (myPutdist != src.myPutdist) return false;
220  if (myNewgrp != src.myNewgrp) return false;
221  if (myHitgrp != src.myHitgrp) return false;
222  if (myUseprimnumattrib != src.myUseprimnumattrib) return false;
223  if (myPrimnumattrib != src.myPrimnumattrib) return false;
224  if (myUseprimuvwattrib != src.myUseprimuvwattrib) return false;
225  if (myPrimuvwattrib != src.myPrimuvwattrib) return false;
226  if (myGetptattribs != src.myGetptattribs) return false;
227  if (myPtattribnames != src.myPtattribnames) return false;
228  if (myVertexattribnames != src.myVertexattribnames) return false;
229  if (myPrimitiveattribnames != src.myPrimitiveattribnames) return false;
230  if (myDetailattribnames != src.myDetailattribnames) return false;
231  if (myGethitgroups != src.myGethitgroups) return false;
232  if (myPtgroupnames != src.myPtgroupnames) return false;
233  if (myVertexgroupnames != src.myVertexgroupnames) return false;
234  if (myPrimitivegroupnames != src.myPrimitivegroupnames) return false;
235 
236 
237  if (baseGetSignature() != src.baseGetSignature()) return false;
238 
239  return true;
240  }
241  bool operator!=(const SOP_RayParms &src) const
242  {
243  return !operator==(src);
244  }
251 
252 
253 
254  void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
255  {
256  myGroup = ""_UTsh;
257  if (true)
258  graph->evalOpParm(myGroup, nodeidx, "group", time, graph->isDirect()?nullptr:depnode);
259  myEntity = 0;
260  if (true)
261  graph->evalOpParm(myEntity, nodeidx, "entity", time, graph->isDirect()?nullptr:depnode);
262  myCollision = ""_UTsh;
263  if (true)
264  graph->evalOpParm(myCollision, nodeidx, "collision", time, graph->isDirect()?nullptr:depnode);
265  myMethod = 1;
266  if (true)
267  graph->evalOpParm(myMethod, nodeidx, "method", time, graph->isDirect()?nullptr:depnode);
268  myDirMethod = 1;
269  if (true && ( (true&&!(((int64(getMethod())!=1)))) ) )
270  graph->evalOpParm(myDirMethod, nodeidx, "dirmethod", time, graph->isDirect()?nullptr:depnode);
271  myDir = UT_Vector3D(0,0,0);
272  if (true && ( (true&&!(((int64(getMethod())!=1))||((int64(getDirMethod())!=0)))) ) )
273  graph->evalOpParm(myDir, nodeidx, "dir", time, graph->isDirect()?nullptr:depnode);
274  myDirAttrib = "N"_UTsh;
275  if (true && ( (true&&!(((int64(getMethod())!=1))||((int64(getDirMethod())!=2)))) ) )
276  graph->evalOpParm(myDirAttrib, nodeidx, "dirattrib", time, graph->isDirect()?nullptr:depnode);
277  myDirectiontype = 0;
278  if (true && ( (true&&!(((int64(getMethod())!=1)))) ) )
279  graph->evalOpParm(myDirectiontype, nodeidx, "reverserays", time, graph->isDirect()?nullptr:depnode);
280  myBidirectionalresult = 0;
281  if (true && ( (true&&!(((int64(getMethod())!=1))||((int64(getDirectiontype())!=2)))) ) )
282  graph->evalOpParm(myBidirectionalresult, nodeidx, "bidirectionalresult", time, graph->isDirect()?nullptr:depnode);
283  myDotrans = true;
284  if (true)
285  graph->evalOpParm(myDotrans, nodeidx, "dotrans", time, graph->isDirect()?nullptr:depnode);
286  myShowguide = true;
287  if (true && ( (true&&!(((int64(getMethod())>=0)))) ) )
288  graph->evalOpParm(myShowguide, nodeidx, "showguide", time, graph->isDirect()?nullptr:depnode);
289  myLookfar = false;
290  if (true && ( (true&&!(((int64(getMethod())!=1)))) ) )
291  graph->evalOpParm(myLookfar, nodeidx, "lookfar", time, graph->isDirect()?nullptr:depnode);
292  myRtolerance = 0.01;
293  if (true && ( (true&&!(((int64(getMethod())!=1)))) ) )
294  graph->evalOpParm(myRtolerance, nodeidx, "rtolerance", time, graph->isDirect()?nullptr:depnode);
295  myScale = 1;
296  if (true && ( (true&&!(((getDotrans()==0)))) ) )
297  graph->evalOpParm(myScale, nodeidx, "scale", time, graph->isDirect()?nullptr:depnode);
298  myLift = 0;
299  if (true)
300  graph->evalOpParm(myLift, nodeidx, "lift", time, graph->isDirect()?nullptr:depnode);
301  myBias = 0;
302  if (true && ( (true&&!(((int64(getMethod())!=1)))) ) )
303  graph->evalOpParm(myBias, nodeidx, "bias", time, graph->isDirect()?nullptr:depnode);
304  myMaxraydistcheck = false;
305  if (true)
306  graph->evalOpParm(myMaxraydistcheck, nodeidx, "maxraydistcheck", time, graph->isDirect()?nullptr:depnode);
307  myMaxraydist = 0;
308  if (true && ( (true&&!(((getMaxraydistcheck()==0)))) ) )
309  graph->evalOpParm(myMaxraydist, nodeidx, "maxraydist", time, graph->isDirect()?nullptr:depnode);
310  mySample = 1;
311  if (true && ( (true&&!(((int64(getMethod())!=1))||((int64(getMethod())!=1)))) ) )
312  graph->evalOpParm(mySample, nodeidx, "sample", time, graph->isDirect()?nullptr:depnode);
313  myJitter = 0;
314  if (true && ( (true&&!(((int64(getMethod())!=1)))) ) )
315  graph->evalOpParm(myJitter, nodeidx, "jitter", time, graph->isDirect()?nullptr:depnode);
316  mySeed = 1;
317  if (true && ( (true&&!(((int64(getMethod())!=1)))) ) )
318  graph->evalOpParm(mySeed, nodeidx, "seed", time, graph->isDirect()?nullptr:depnode);
319  myCombinetype = 0;
320  if (true && ( (true&&!(((int64(getMethod())!=1)))) ) )
321  graph->evalOpParm(myCombinetype, nodeidx, "combinetype", time, graph->isDirect()?nullptr:depnode);
322  myPutnml = false;
323  if (true)
324  graph->evalOpParm(myPutnml, nodeidx, "putnml", time, graph->isDirect()?nullptr:depnode);
325  myPutdist = false;
326  if (true)
327  graph->evalOpParm(myPutdist, nodeidx, "putdist", time, graph->isDirect()?nullptr:depnode);
328  myNewgrp = false;
329  if (true)
330  graph->evalOpParm(myNewgrp, nodeidx, "newgrp", time, graph->isDirect()?nullptr:depnode);
331  myHitgrp = "rayHitGroup"_UTsh;
332  if (true && ( (true&&!(((getNewgrp()==0)))) ) )
333  graph->evalOpParm(myHitgrp, nodeidx, "hitgrp", time, graph->isDirect()?nullptr:depnode);
334  myUseprimnumattrib = false;
335  if (true)
336  graph->evalOpParm(myUseprimnumattrib, nodeidx, "useprimnumattrib", time, graph->isDirect()?nullptr:depnode);
337  myPrimnumattrib = "hitprim"_UTsh;
338  if (true && ( (true&&!(((getUseprimnumattrib()==0)))) ) )
339  graph->evalOpParm(myPrimnumattrib, nodeidx, "primnumattrib", time, graph->isDirect()?nullptr:depnode);
340  myUseprimuvwattrib = false;
341  if (true)
342  graph->evalOpParm(myUseprimuvwattrib, nodeidx, "useprimuvwattrib", time, graph->isDirect()?nullptr:depnode);
343  myPrimuvwattrib = "hitprimuv"_UTsh;
344  if (true && ( (true&&!(((getUseprimuvwattrib()==0)))) ) )
345  graph->evalOpParm(myPrimuvwattrib, nodeidx, "primuvwattrib", time, graph->isDirect()?nullptr:depnode);
346  myGetptattribs = false;
347  if (true)
348  graph->evalOpParm(myGetptattribs, nodeidx, "getptattribs", time, graph->isDirect()?nullptr:depnode);
349  myPtattribnames = "*"_UTsh;
350  if (true && ( (true&&!(((getGetptattribs()==0)))) ) )
351  graph->evalOpParm(myPtattribnames, nodeidx, "ptattribnames", time, graph->isDirect()?nullptr:depnode);
352  myVertexattribnames = ""_UTsh;
353  if (true && ( (true&&!(((getGetptattribs()==0)))) ) )
354  graph->evalOpParm(myVertexattribnames, nodeidx, "vertexattribnames", time, graph->isDirect()?nullptr:depnode);
355  myPrimitiveattribnames = ""_UTsh;
356  if (true && ( (true&&!(((getGetptattribs()==0)))) ) )
357  graph->evalOpParm(myPrimitiveattribnames, nodeidx, "primitiveattribnames", time, graph->isDirect()?nullptr:depnode);
358  myDetailattribnames = ""_UTsh;
359  if (true && ( (true&&!(((getGetptattribs()==0)))) ) )
360  graph->evalOpParm(myDetailattribnames, nodeidx, "detailattribnames", time, graph->isDirect()?nullptr:depnode);
361  myGethitgroups = false;
362  if (true)
363  graph->evalOpParm(myGethitgroups, nodeidx, "gethitgroups", time, graph->isDirect()?nullptr:depnode);
364  myPtgroupnames = "*"_UTsh;
365  if (true && ( (true&&!(((getGethitgroups()==0)))) ) )
366  graph->evalOpParm(myPtgroupnames, nodeidx, "ptgroupnames", time, graph->isDirect()?nullptr:depnode);
367  myVertexgroupnames = ""_UTsh;
368  if (true && ( (true&&!(((getGethitgroups()==0)))) ) )
369  graph->evalOpParm(myVertexgroupnames, nodeidx, "vertexgroupnames", time, graph->isDirect()?nullptr:depnode);
370  myPrimitivegroupnames = ""_UTsh;
371  if (true && ( (true&&!(((getGethitgroups()==0)))) ) )
372  graph->evalOpParm(myPrimitivegroupnames, nodeidx, "primitivegroupnames", time, graph->isDirect()?nullptr:depnode);
373 
374  }
375 
376 
377  void loadFromOpSubclass(const LoadParms &loadparms) override
378  {
379  buildFromOp(loadparms.graph(), loadparms.nodeIdx(), loadparms.context().getTime(), loadparms.depnode());
380  }
381 
382 
383  void copyFrom(const OP_NodeParms *src) override
384  {
385  *this = *((const SOP_RayParms *)src);
386  }
387 
388  template <typename T>
389  void
390  doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
391  {
392  if (idx.size() < 1)
393  return;
394  UT_ASSERT(idx.size() == instance.size()+1);
395  if (idx.size() != instance.size()+1)
396  return;
397  switch (idx[0])
398  {
399  case 0:
400  coerceValue(value, myGroup);
401  break;
402  case 1:
403  coerceValue(value, myEntity);
404  break;
405  case 2:
406  coerceValue(value, myCollision);
407  break;
408  case 3:
409  coerceValue(value, myMethod);
410  break;
411  case 4:
412  coerceValue(value, myDirMethod);
413  break;
414  case 5:
415  coerceValue(value, myDir);
416  break;
417  case 6:
418  coerceValue(value, myDirAttrib);
419  break;
420  case 7:
421  coerceValue(value, myDirectiontype);
422  break;
423  case 8:
424  coerceValue(value, myBidirectionalresult);
425  break;
426  case 9:
427  coerceValue(value, myDotrans);
428  break;
429  case 10:
430  coerceValue(value, myShowguide);
431  break;
432  case 11:
433  coerceValue(value, myLookfar);
434  break;
435  case 12:
436  coerceValue(value, myRtolerance);
437  break;
438  case 13:
439  coerceValue(value, myScale);
440  break;
441  case 14:
442  coerceValue(value, myLift);
443  break;
444  case 15:
445  coerceValue(value, myBias);
446  break;
447  case 16:
448  coerceValue(value, myMaxraydistcheck);
449  break;
450  case 17:
451  coerceValue(value, myMaxraydist);
452  break;
453  case 18:
454  coerceValue(value, mySample);
455  break;
456  case 19:
457  coerceValue(value, myJitter);
458  break;
459  case 20:
460  coerceValue(value, mySeed);
461  break;
462  case 21:
463  coerceValue(value, myCombinetype);
464  break;
465  case 22:
466  coerceValue(value, myPutnml);
467  break;
468  case 23:
469  coerceValue(value, myPutdist);
470  break;
471  case 24:
472  coerceValue(value, myNewgrp);
473  break;
474  case 25:
475  coerceValue(value, myHitgrp);
476  break;
477  case 26:
478  coerceValue(value, myUseprimnumattrib);
479  break;
480  case 27:
481  coerceValue(value, myPrimnumattrib);
482  break;
483  case 28:
484  coerceValue(value, myUseprimuvwattrib);
485  break;
486  case 29:
487  coerceValue(value, myPrimuvwattrib);
488  break;
489  case 30:
490  coerceValue(value, myGetptattribs);
491  break;
492  case 31:
493  coerceValue(value, myPtattribnames);
494  break;
495  case 32:
496  coerceValue(value, myVertexattribnames);
497  break;
498  case 33:
499  coerceValue(value, myPrimitiveattribnames);
500  break;
501  case 34:
502  coerceValue(value, myDetailattribnames);
503  break;
504  case 35:
505  coerceValue(value, myGethitgroups);
506  break;
507  case 36:
508  coerceValue(value, myPtgroupnames);
509  break;
510  case 37:
511  coerceValue(value, myVertexgroupnames);
512  break;
513  case 38:
514  coerceValue(value, myPrimitivegroupnames);
515  break;
516 
517  }
518  }
519 
520  bool isParmColorRamp(exint idx) const override
521  {
522  switch (idx)
523  {
524 
525  }
526  return false;
527  }
528 
529  void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
530  { doGetParmValue(idx, instance, value); }
531  void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
532  { doGetParmValue(idx, instance, value); }
533  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
534  { doGetParmValue(idx, instance, value); }
535  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
536  { doGetParmValue(idx, instance, value); }
537  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
538  { doGetParmValue(idx, instance, value); }
539  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
540  { doGetParmValue(idx, instance, value); }
541  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
542  { doGetParmValue(idx, instance, value); }
543  void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
544  { doGetParmValue(idx, instance, value); }
545  void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
546  { doGetParmValue(idx, instance, value); }
547  void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr<UT_Ramp> &value) const override
548  { doGetParmValue(idx, instance, value); }
549  void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
550  { doGetParmValue(idx, instance, value); }
551 
552  template <typename T>
553  void
554  doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
555  {
556  if (idx.size() < 1)
557  return;
558  UT_ASSERT(idx.size() == instance.size()+1);
559  if (idx.size() != instance.size()+1)
560  return;
561  switch (idx[0])
562  {
563  case 0:
564  coerceValue(myGroup, ( ( value ) ));
565  break;
566  case 1:
567  coerceValue(myEntity, clampMinValue(0, clampMaxValue(1, value ) ));
568  break;
569  case 2:
570  coerceValue(myCollision, ( ( value ) ));
571  break;
572  case 3:
573  coerceValue(myMethod, clampMinValue(0, clampMaxValue(1, value ) ));
574  break;
575  case 4:
576  coerceValue(myDirMethod, clampMinValue(0, clampMaxValue(2, value ) ));
577  break;
578  case 5:
579  coerceValue(myDir, ( ( value ) ));
580  break;
581  case 6:
582  coerceValue(myDirAttrib, ( ( value ) ));
583  break;
584  case 7:
585  coerceValue(myDirectiontype, clampMinValue(0, clampMaxValue(2, value ) ));
586  break;
587  case 8:
588  coerceValue(myBidirectionalresult, clampMinValue(0, clampMaxValue(1, value ) ));
589  break;
590  case 9:
591  coerceValue(myDotrans, ( ( value ) ));
592  break;
593  case 10:
594  coerceValue(myShowguide, ( ( value ) ));
595  break;
596  case 11:
597  coerceValue(myLookfar, ( ( value ) ));
598  break;
599  case 12:
600  coerceValue(myRtolerance, clampMinValue(0, clampMaxValue(1, value ) ));
601  break;
602  case 13:
603  coerceValue(myScale, ( ( value ) ));
604  break;
605  case 14:
606  coerceValue(myLift, ( ( value ) ));
607  break;
608  case 15:
609  coerceValue(myBias, ( ( value ) ));
610  break;
611  case 16:
612  coerceValue(myMaxraydistcheck, ( ( value ) ));
613  break;
614  case 17:
615  coerceValue(myMaxraydist, ( ( value ) ));
616  break;
617  case 18:
618  coerceValue(mySample, clampMinValue(1, ( value ) ));
619  break;
620  case 19:
621  coerceValue(myJitter, ( ( value ) ));
622  break;
623  case 20:
624  coerceValue(mySeed, clampMinValue(0, ( value ) ));
625  break;
626  case 21:
627  coerceValue(myCombinetype, clampMinValue(0, clampMaxValue(3, value ) ));
628  break;
629  case 22:
630  coerceValue(myPutnml, ( ( value ) ));
631  break;
632  case 23:
633  coerceValue(myPutdist, ( ( value ) ));
634  break;
635  case 24:
636  coerceValue(myNewgrp, ( ( value ) ));
637  break;
638  case 25:
639  coerceValue(myHitgrp, ( ( value ) ));
640  break;
641  case 26:
642  coerceValue(myUseprimnumattrib, ( ( value ) ));
643  break;
644  case 27:
645  coerceValue(myPrimnumattrib, ( ( value ) ));
646  break;
647  case 28:
648  coerceValue(myUseprimuvwattrib, ( ( value ) ));
649  break;
650  case 29:
651  coerceValue(myPrimuvwattrib, ( ( value ) ));
652  break;
653  case 30:
654  coerceValue(myGetptattribs, ( ( value ) ));
655  break;
656  case 31:
657  coerceValue(myPtattribnames, ( ( value ) ));
658  break;
659  case 32:
660  coerceValue(myVertexattribnames, ( ( value ) ));
661  break;
662  case 33:
663  coerceValue(myPrimitiveattribnames, ( ( value ) ));
664  break;
665  case 34:
666  coerceValue(myDetailattribnames, ( ( value ) ));
667  break;
668  case 35:
669  coerceValue(myGethitgroups, ( ( value ) ));
670  break;
671  case 36:
672  coerceValue(myPtgroupnames, ( ( value ) ));
673  break;
674  case 37:
675  coerceValue(myVertexgroupnames, ( ( value ) ));
676  break;
677  case 38:
678  coerceValue(myPrimitivegroupnames, ( ( value ) ));
679  break;
680 
681  }
682  }
683 
684  void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
685  { doSetParmValue(idx, instance, value); }
686  void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
687  { doSetParmValue(idx, instance, value); }
688  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
689  { doSetParmValue(idx, instance, value); }
690  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
691  { doSetParmValue(idx, instance, value); }
692  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
693  { doSetParmValue(idx, instance, value); }
694  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
695  { doSetParmValue(idx, instance, value); }
696  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
697  { doSetParmValue(idx, instance, value); }
698  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
699  { doSetParmValue(idx, instance, value); }
700  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
701  { doSetParmValue(idx, instance, value); }
702  void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr<UT_Ramp> &value) override
703  { doSetParmValue(idx, instance, value); }
704  void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
705  { doSetParmValue(idx, instance, value); }
706 
707  exint getNestNumParms(TempIndex idx) const override
708  {
709  if (idx.size() == 0)
710  return 39;
711  switch (idx[0])
712  {
713 
714  }
715  // Invalid
716  return 0;
717  }
718 
719  const char *getNestParmName(TempIndex fieldnum) const override
720  {
721  if (fieldnum.size() < 1)
722  return 0;
723  switch (fieldnum[0])
724  {
725  case 0:
726  return "group";
727  case 1:
728  return "entity";
729  case 2:
730  return "collision";
731  case 3:
732  return "method";
733  case 4:
734  return "dirmethod";
735  case 5:
736  return "dir";
737  case 6:
738  return "dirattrib";
739  case 7:
740  return "reverserays";
741  case 8:
742  return "bidirectionalresult";
743  case 9:
744  return "dotrans";
745  case 10:
746  return "showguide";
747  case 11:
748  return "lookfar";
749  case 12:
750  return "rtolerance";
751  case 13:
752  return "scale";
753  case 14:
754  return "lift";
755  case 15:
756  return "bias";
757  case 16:
758  return "maxraydistcheck";
759  case 17:
760  return "maxraydist";
761  case 18:
762  return "sample";
763  case 19:
764  return "jitter";
765  case 20:
766  return "seed";
767  case 21:
768  return "combinetype";
769  case 22:
770  return "putnml";
771  case 23:
772  return "putdist";
773  case 24:
774  return "newgrp";
775  case 25:
776  return "hitgrp";
777  case 26:
778  return "useprimnumattrib";
779  case 27:
780  return "primnumattrib";
781  case 28:
782  return "useprimuvwattrib";
783  case 29:
784  return "primuvwattrib";
785  case 30:
786  return "getptattribs";
787  case 31:
788  return "ptattribnames";
789  case 32:
790  return "vertexattribnames";
791  case 33:
792  return "primitiveattribnames";
793  case 34:
794  return "detailattribnames";
795  case 35:
796  return "gethitgroups";
797  case 36:
798  return "ptgroupnames";
799  case 37:
800  return "vertexgroupnames";
801  case 38:
802  return "primitivegroupnames";
803 
804  }
805  return 0;
806  }
807 
808  ParmType getNestParmType(TempIndex fieldnum) const override
809  {
810  if (fieldnum.size() < 1)
811  return PARM_UNSUPPORTED;
812  switch (fieldnum[0])
813  {
814  case 0:
815  return PARM_STRING;
816  case 1:
817  return PARM_INTEGER;
818  case 2:
819  return PARM_STRING;
820  case 3:
821  return PARM_INTEGER;
822  case 4:
823  return PARM_INTEGER;
824  case 5:
825  return PARM_VECTOR3;
826  case 6:
827  return PARM_STRING;
828  case 7:
829  return PARM_INTEGER;
830  case 8:
831  return PARM_INTEGER;
832  case 9:
833  return PARM_INTEGER;
834  case 10:
835  return PARM_INTEGER;
836  case 11:
837  return PARM_INTEGER;
838  case 12:
839  return PARM_FLOAT;
840  case 13:
841  return PARM_FLOAT;
842  case 14:
843  return PARM_FLOAT;
844  case 15:
845  return PARM_FLOAT;
846  case 16:
847  return PARM_INTEGER;
848  case 17:
849  return PARM_FLOAT;
850  case 18:
851  return PARM_INTEGER;
852  case 19:
853  return PARM_FLOAT;
854  case 20:
855  return PARM_INTEGER;
856  case 21:
857  return PARM_INTEGER;
858  case 22:
859  return PARM_INTEGER;
860  case 23:
861  return PARM_INTEGER;
862  case 24:
863  return PARM_INTEGER;
864  case 25:
865  return PARM_STRING;
866  case 26:
867  return PARM_INTEGER;
868  case 27:
869  return PARM_STRING;
870  case 28:
871  return PARM_INTEGER;
872  case 29:
873  return PARM_STRING;
874  case 30:
875  return PARM_INTEGER;
876  case 31:
877  return PARM_STRING;
878  case 32:
879  return PARM_STRING;
880  case 33:
881  return PARM_STRING;
882  case 34:
883  return PARM_STRING;
884  case 35:
885  return PARM_INTEGER;
886  case 36:
887  return PARM_STRING;
888  case 37:
889  return PARM_STRING;
890  case 38:
891  return PARM_STRING;
892 
893  }
894  return PARM_UNSUPPORTED;
895  }
896 
897  // Boiler plate to load individual types.
898  static void loadData(UT_IStream &is, int64 &v)
899  { is.bread(&v, 1); }
900  static void loadData(UT_IStream &is, bool &v)
901  { int64 iv; is.bread(&iv, 1); v = iv; }
902  static void loadData(UT_IStream &is, fpreal64 &v)
903  { is.bread<fpreal64>(&v, 1); }
904  static void loadData(UT_IStream &is, UT_Vector2D &v)
905  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1); }
906  static void loadData(UT_IStream &is, UT_Vector3D &v)
907  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
908  is.bread<fpreal64>(&v.z(), 1); }
909  static void loadData(UT_IStream &is, UT_Vector4D &v)
910  { is.bread<fpreal64>(&v.x(), 1); is.bread<fpreal64>(&v.y(), 1);
911  is.bread<fpreal64>(&v.z(), 1); is.bread<fpreal64>(&v.w(), 1); }
912  static void loadData(UT_IStream &is, UT_Matrix2D &v)
913  { for (int r = 0; r < 2; r++) for (int c = 0; c < 2; c++) is.bread<fpreal64>(&v(r, c), 1); }
914  static void loadData(UT_IStream &is, UT_Matrix3D &v)
915  { for (int r = 0; r < 3; r++) for (int c = 0; c < 3; c++) is.bread<fpreal64>(&v(r, c), 1); }
916  static void loadData(UT_IStream &is, UT_Matrix4D &v)
917  { for (int r = 0; r < 4; r++) for (int c = 0; c < 4; c++) is.bread<fpreal64>(&v(r, c), 1); }
918  static void loadData(UT_IStream &is, UT_Vector2I &v)
919  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1); }
920  static void loadData(UT_IStream &is, UT_Vector3I &v)
921  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
922  is.bread<int64>(&v.z(), 1); }
923  static void loadData(UT_IStream &is, UT_Vector4I &v)
924  { is.bread<int64>(&v.x(), 1); is.bread<int64>(&v.y(), 1);
925  is.bread<int64>(&v.z(), 1); is.bread<int64>(&v.w(), 1); }
927  { is.bread(v); }
929  { UT_StringHolder rampdata;
930  loadData(is, rampdata);
931  if (rampdata.isstring())
932  {
933  v.reset(new UT_Ramp());
934  UT_IStream istr((const char *) rampdata, rampdata.length(), UT_ISTREAM_ASCII);
935  v->load(istr);
936  }
937  else v.reset();
938  }
941  loadData(is, data);
942  if (data.isstring())
943  {
944  // Find the data type.
945  const char *colon = UT_StringWrap(data).findChar(':');
946  if (colon)
947  {
948  int typelen = colon - data.buffer();
950  type.strncpy(data.buffer(), typelen);
951  UT_IStream istr(((const char *) data) + typelen + 1, data.length() - (typelen + 1), UT_ISTREAM_BINARY);
952 
953  v = PRM_DataFactory::parseBinary(type.buffer(), istr);
954  }
955  }
956  else v.reset();
957  }
958 
959  static void saveData(std::ostream &os, int64 v)
960  { UTwrite(os, &v); }
961  static void saveData(std::ostream &os, bool v)
962  { int64 iv = v; UTwrite(os, &iv); }
963  static void saveData(std::ostream &os, fpreal64 v)
964  { UTwrite<fpreal64>(os, &v); }
965  static void saveData(std::ostream &os, UT_Vector2D v)
966  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y()); }
967  static void saveData(std::ostream &os, UT_Vector3D v)
968  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
969  UTwrite<fpreal64>(os, &v.z()); }
970  static void saveData(std::ostream &os, UT_Vector4D v)
971  { UTwrite<fpreal64>(os, &v.x()); UTwrite<fpreal64>(os, &v.y());
972  UTwrite<fpreal64>(os, &v.z()); UTwrite<fpreal64>(os, &v.w()); }
973  static void saveData(std::ostream &os, UT_Matrix2D v)
975  static void saveData(std::ostream &os, UT_Matrix3D v)
977  static void saveData(std::ostream &os, UT_Matrix4D v)
979  static void saveData(std::ostream &os, UT_StringHolder s)
980  { UT_StringWrap(s).saveBinary(os); }
981  static void saveData(std::ostream &os, UT_SharedPtr<UT_Ramp> s)
983  UT_OStringStream ostr;
984  if (s) s->save(ostr);
985  result = ostr.str();
986  saveData(os, result);
987  }
988  static void saveData(std::ostream &os, PRM_DataItemHandle s)
990  UT_OStringStream ostr;
991  if (s)
992  {
993  ostr << s->getDataTypeToken();
994  ostr << ":";
995  s->saveBinary(ostr);
996  }
997  result = ostr.str();
998  saveData(os, result);
999  }
1000 
1001 
1002  void save(std::ostream &os) const
1003  {
1004  int32 v = version();
1005  UTwrite(os, &v);
1006  saveData(os, myGroup);
1007  saveData(os, myEntity);
1008  saveData(os, myCollision);
1009  saveData(os, myMethod);
1010  saveData(os, myDirMethod);
1011  saveData(os, myDir);
1012  saveData(os, myDirAttrib);
1013  saveData(os, myDirectiontype);
1014  saveData(os, myBidirectionalresult);
1015  saveData(os, myDotrans);
1016  saveData(os, myShowguide);
1017  saveData(os, myLookfar);
1018  saveData(os, myRtolerance);
1019  saveData(os, myScale);
1020  saveData(os, myLift);
1021  saveData(os, myBias);
1022  saveData(os, myMaxraydistcheck);
1023  saveData(os, myMaxraydist);
1024  saveData(os, mySample);
1025  saveData(os, myJitter);
1026  saveData(os, mySeed);
1027  saveData(os, myCombinetype);
1028  saveData(os, myPutnml);
1029  saveData(os, myPutdist);
1030  saveData(os, myNewgrp);
1031  saveData(os, myHitgrp);
1032  saveData(os, myUseprimnumattrib);
1033  saveData(os, myPrimnumattrib);
1034  saveData(os, myUseprimuvwattrib);
1035  saveData(os, myPrimuvwattrib);
1036  saveData(os, myGetptattribs);
1037  saveData(os, myPtattribnames);
1038  saveData(os, myVertexattribnames);
1039  saveData(os, myPrimitiveattribnames);
1040  saveData(os, myDetailattribnames);
1041  saveData(os, myGethitgroups);
1042  saveData(os, myPtgroupnames);
1043  saveData(os, myVertexgroupnames);
1044  saveData(os, myPrimitivegroupnames);
1045 
1046  }
1047 
1048  bool load(UT_IStream &is)
1049  {
1050  int32 v;
1051  is.bread(&v, 1);
1052  if (version() != v)
1053  {
1054  // Fail incompatible versions
1055  return false;
1056  }
1057  loadData(is, myGroup);
1058  loadData(is, myEntity);
1059  loadData(is, myCollision);
1060  loadData(is, myMethod);
1061  loadData(is, myDirMethod);
1062  loadData(is, myDir);
1063  loadData(is, myDirAttrib);
1064  loadData(is, myDirectiontype);
1065  loadData(is, myBidirectionalresult);
1066  loadData(is, myDotrans);
1067  loadData(is, myShowguide);
1068  loadData(is, myLookfar);
1069  loadData(is, myRtolerance);
1070  loadData(is, myScale);
1071  loadData(is, myLift);
1072  loadData(is, myBias);
1073  loadData(is, myMaxraydistcheck);
1074  loadData(is, myMaxraydist);
1075  loadData(is, mySample);
1076  loadData(is, myJitter);
1077  loadData(is, mySeed);
1078  loadData(is, myCombinetype);
1079  loadData(is, myPutnml);
1080  loadData(is, myPutdist);
1081  loadData(is, myNewgrp);
1082  loadData(is, myHitgrp);
1083  loadData(is, myUseprimnumattrib);
1084  loadData(is, myPrimnumattrib);
1085  loadData(is, myUseprimuvwattrib);
1086  loadData(is, myPrimuvwattrib);
1087  loadData(is, myGetptattribs);
1088  loadData(is, myPtattribnames);
1089  loadData(is, myVertexattribnames);
1090  loadData(is, myPrimitiveattribnames);
1091  loadData(is, myDetailattribnames);
1092  loadData(is, myGethitgroups);
1093  loadData(is, myPtgroupnames);
1094  loadData(is, myVertexgroupnames);
1095  loadData(is, myPrimitivegroupnames);
1096 
1097  return true;
1098  }
1099 
1100  const UT_StringHolder & getGroup() const { return myGroup; }
1101  void setGroup(const UT_StringHolder & val) { myGroup = val; }
1103  {
1104  SOP_Node *thissop = cookparms.getNode();
1105  if (!thissop) return getGroup();
1107  OP_Utils::evalOpParm(result, thissop, "group", cookparms.getCookTime(), 0);
1108  return result;
1109  }
1110  Entity getEntity() const { return Entity(myEntity); }
1111  void setEntity(Entity val) { myEntity = int64(val); }
1112  Entity opEntity(const SOP_NodeVerb::CookParms &cookparms) const
1113  {
1114  SOP_Node *thissop = cookparms.getNode();
1115  if (!thissop) return getEntity();
1116  int64 result;
1117  OP_Utils::evalOpParm(result, thissop, "entity", cookparms.getCookTime(), 0);
1118  return Entity(result);
1119  }
1120  const UT_StringHolder & getCollision() const { return myCollision; }
1121  void setCollision(const UT_StringHolder & val) { myCollision = val; }
1123  {
1124  SOP_Node *thissop = cookparms.getNode();
1125  if (!thissop) return getCollision();
1127  OP_Utils::evalOpParm(result, thissop, "collision", cookparms.getCookTime(), 0);
1128  return result;
1129  }
1130  Method getMethod() const { return Method(myMethod); }
1131  void setMethod(Method val) { myMethod = int64(val); }
1132  Method opMethod(const SOP_NodeVerb::CookParms &cookparms) const
1133  {
1134  SOP_Node *thissop = cookparms.getNode();
1135  if (!thissop) return getMethod();
1136  int64 result;
1137  OP_Utils::evalOpParm(result, thissop, "method", cookparms.getCookTime(), 0);
1138  return Method(result);
1139  }
1140  DirMethod getDirMethod() const { return DirMethod(myDirMethod); }
1141  void setDirMethod(DirMethod val) { myDirMethod = int64(val); }
1143  {
1144  SOP_Node *thissop = cookparms.getNode();
1145  if (!thissop) return getDirMethod();
1146  int64 result;
1147  OP_Utils::evalOpParm(result, thissop, "dirmethod", cookparms.getCookTime(), 0);
1148  return DirMethod(result);
1149  }
1150  UT_Vector3D getDir() const { return myDir; }
1151  void setDir(UT_Vector3D val) { myDir = val; }
1153  {
1154  SOP_Node *thissop = cookparms.getNode();
1155  if (!thissop) return getDir();
1157  OP_Utils::evalOpParm(result, thissop, "dir", cookparms.getCookTime(), 0);
1158  return result;
1159  }
1160  const UT_StringHolder & getDirAttrib() const { return myDirAttrib; }
1161  void setDirAttrib(const UT_StringHolder & val) { myDirAttrib = val; }
1163  {
1164  SOP_Node *thissop = cookparms.getNode();
1165  if (!thissop) return getDirAttrib();
1167  OP_Utils::evalOpParm(result, thissop, "dirattrib", cookparms.getCookTime(), 0);
1168  return result;
1169  }
1170  Directiontype getDirectiontype() const { return Directiontype(myDirectiontype); }
1171  void setDirectiontype(Directiontype val) { myDirectiontype = int64(val); }
1173  {
1174  SOP_Node *thissop = cookparms.getNode();
1175  if (!thissop) return getDirectiontype();
1176  int64 result;
1177  OP_Utils::evalOpParm(result, thissop, "reverserays", cookparms.getCookTime(), 0);
1178  return Directiontype(result);
1179  }
1180  Bidirectionalresult getBidirectionalresult() const { return Bidirectionalresult(myBidirectionalresult); }
1181  void setBidirectionalresult(Bidirectionalresult val) { myBidirectionalresult = int64(val); }
1183  {
1184  SOP_Node *thissop = cookparms.getNode();
1185  if (!thissop) return getBidirectionalresult();
1186  int64 result;
1187  OP_Utils::evalOpParm(result, thissop, "bidirectionalresult", cookparms.getCookTime(), 0);
1188  return Bidirectionalresult(result);
1189  }
1190  bool getDotrans() const { return myDotrans; }
1191  void setDotrans(bool val) { myDotrans = val; }
1192  bool opDotrans(const SOP_NodeVerb::CookParms &cookparms) const
1193  {
1194  SOP_Node *thissop = cookparms.getNode();
1195  if (!thissop) return getDotrans();
1196  bool result;
1197  OP_Utils::evalOpParm(result, thissop, "dotrans", cookparms.getCookTime(), 0);
1198  return result;
1199  }
1200  bool getShowguide() const { return myShowguide; }
1201  void setShowguide(bool val) { myShowguide = val; }
1202  bool opShowguide(const SOP_NodeVerb::CookParms &cookparms) const
1203  {
1204  SOP_Node *thissop = cookparms.getNode();
1205  if (!thissop) return getShowguide();
1206  bool result;
1207  OP_Utils::evalOpParm(result, thissop, "showguide", cookparms.getCookTime(), 0);
1208  return result;
1209  }
1210  bool getLookfar() const { return myLookfar; }
1211  void setLookfar(bool val) { myLookfar = val; }
1212  bool opLookfar(const SOP_NodeVerb::CookParms &cookparms) const
1213  {
1214  SOP_Node *thissop = cookparms.getNode();
1215  if (!thissop) return getLookfar();
1216  bool result;
1217  OP_Utils::evalOpParm(result, thissop, "lookfar", cookparms.getCookTime(), 0);
1218  return result;
1219  }
1220  fpreal64 getRtolerance() const { return myRtolerance; }
1221  void setRtolerance(fpreal64 val) { myRtolerance = val; }
1223  {
1224  SOP_Node *thissop = cookparms.getNode();
1225  if (!thissop) return getRtolerance();
1226  fpreal64 result;
1227  OP_Utils::evalOpParm(result, thissop, "rtolerance", cookparms.getCookTime(), 0);
1228  return result;
1229  }
1230  fpreal64 getScale() const { return myScale; }
1231  void setScale(fpreal64 val) { myScale = val; }
1232  fpreal64 opScale(const SOP_NodeVerb::CookParms &cookparms) const
1233  {
1234  SOP_Node *thissop = cookparms.getNode();
1235  if (!thissop) return getScale();
1236  fpreal64 result;
1237  OP_Utils::evalOpParm(result, thissop, "scale", cookparms.getCookTime(), 0);
1238  return result;
1239  }
1240  fpreal64 getLift() const { return myLift; }
1241  void setLift(fpreal64 val) { myLift = val; }
1242  fpreal64 opLift(const SOP_NodeVerb::CookParms &cookparms) const
1243  {
1244  SOP_Node *thissop = cookparms.getNode();
1245  if (!thissop) return getLift();
1246  fpreal64 result;
1247  OP_Utils::evalOpParm(result, thissop, "lift", cookparms.getCookTime(), 0);
1248  return result;
1249  }
1250  fpreal64 getBias() const { return myBias; }
1251  void setBias(fpreal64 val) { myBias = val; }
1252  fpreal64 opBias(const SOP_NodeVerb::CookParms &cookparms) const
1253  {
1254  SOP_Node *thissop = cookparms.getNode();
1255  if (!thissop) return getBias();
1256  fpreal64 result;
1257  OP_Utils::evalOpParm(result, thissop, "bias", cookparms.getCookTime(), 0);
1258  return result;
1259  }
1260  bool getMaxraydistcheck() const { return myMaxraydistcheck; }
1261  void setMaxraydistcheck(bool val) { myMaxraydistcheck = val; }
1262  bool opMaxraydistcheck(const SOP_NodeVerb::CookParms &cookparms) const
1263  {
1264  SOP_Node *thissop = cookparms.getNode();
1265  if (!thissop) return getMaxraydistcheck();
1266  bool result;
1267  OP_Utils::evalOpParm(result, thissop, "maxraydistcheck", cookparms.getCookTime(), 0);
1268  return result;
1269  }
1270  fpreal64 getMaxraydist() const { return myMaxraydist; }
1271  void setMaxraydist(fpreal64 val) { myMaxraydist = val; }
1273  {
1274  SOP_Node *thissop = cookparms.getNode();
1275  if (!thissop) return getMaxraydist();
1276  fpreal64 result;
1277  OP_Utils::evalOpParm(result, thissop, "maxraydist", cookparms.getCookTime(), 0);
1278  return result;
1279  }
1280  int64 getSample() const { return mySample; }
1281  void setSample(int64 val) { mySample = val; }
1282  int64 opSample(const SOP_NodeVerb::CookParms &cookparms) const
1283  {
1284  SOP_Node *thissop = cookparms.getNode();
1285  if (!thissop) return getSample();
1286  int64 result;
1287  OP_Utils::evalOpParm(result, thissop, "sample", cookparms.getCookTime(), 0);
1288  return result;
1289  }
1290  fpreal64 getJitter() const { return myJitter; }
1291  void setJitter(fpreal64 val) { myJitter = val; }
1293  {
1294  SOP_Node *thissop = cookparms.getNode();
1295  if (!thissop) return getJitter();
1296  fpreal64 result;
1297  OP_Utils::evalOpParm(result, thissop, "jitter", cookparms.getCookTime(), 0);
1298  return result;
1299  }
1300  int64 getSeed() const { return mySeed; }
1301  void setSeed(int64 val) { mySeed = val; }
1302  int64 opSeed(const SOP_NodeVerb::CookParms &cookparms) const
1303  {
1304  SOP_Node *thissop = cookparms.getNode();
1305  if (!thissop) return getSeed();
1306  int64 result;
1307  OP_Utils::evalOpParm(result, thissop, "seed", cookparms.getCookTime(), 0);
1308  return result;
1309  }
1310  Combinetype getCombinetype() const { return Combinetype(myCombinetype); }
1311  void setCombinetype(Combinetype val) { myCombinetype = int64(val); }
1313  {
1314  SOP_Node *thissop = cookparms.getNode();
1315  if (!thissop) return getCombinetype();
1316  int64 result;
1317  OP_Utils::evalOpParm(result, thissop, "combinetype", cookparms.getCookTime(), 0);
1318  return Combinetype(result);
1319  }
1320  bool getPutnml() const { return myPutnml; }
1321  void setPutnml(bool val) { myPutnml = val; }
1322  bool opPutnml(const SOP_NodeVerb::CookParms &cookparms) const
1323  {
1324  SOP_Node *thissop = cookparms.getNode();
1325  if (!thissop) return getPutnml();
1326  bool result;
1327  OP_Utils::evalOpParm(result, thissop, "putnml", cookparms.getCookTime(), 0);
1328  return result;
1329  }
1330  bool getPutdist() const { return myPutdist; }
1331  void setPutdist(bool val) { myPutdist = val; }
1332  bool opPutdist(const SOP_NodeVerb::CookParms &cookparms) const
1333  {
1334  SOP_Node *thissop = cookparms.getNode();
1335  if (!thissop) return getPutdist();
1336  bool result;
1337  OP_Utils::evalOpParm(result, thissop, "putdist", cookparms.getCookTime(), 0);
1338  return result;
1339  }
1340  bool getNewgrp() const { return myNewgrp; }
1341  void setNewgrp(bool val) { myNewgrp = val; }
1342  bool opNewgrp(const SOP_NodeVerb::CookParms &cookparms) const
1343  {
1344  SOP_Node *thissop = cookparms.getNode();
1345  if (!thissop) return getNewgrp();
1346  bool result;
1347  OP_Utils::evalOpParm(result, thissop, "newgrp", cookparms.getCookTime(), 0);
1348  return result;
1349  }
1350  const UT_StringHolder & getHitgrp() const { return myHitgrp; }
1351  void setHitgrp(const UT_StringHolder & val) { myHitgrp = val; }
1353  {
1354  SOP_Node *thissop = cookparms.getNode();
1355  if (!thissop) return getHitgrp();
1357  OP_Utils::evalOpParm(result, thissop, "hitgrp", cookparms.getCookTime(), 0);
1358  return result;
1359  }
1360  bool getUseprimnumattrib() const { return myUseprimnumattrib; }
1361  void setUseprimnumattrib(bool val) { myUseprimnumattrib = val; }
1362  bool opUseprimnumattrib(const SOP_NodeVerb::CookParms &cookparms) const
1363  {
1364  SOP_Node *thissop = cookparms.getNode();
1365  if (!thissop) return getUseprimnumattrib();
1366  bool result;
1367  OP_Utils::evalOpParm(result, thissop, "useprimnumattrib", cookparms.getCookTime(), 0);
1368  return result;
1369  }
1370  const UT_StringHolder & getPrimnumattrib() const { return myPrimnumattrib; }
1371  void setPrimnumattrib(const UT_StringHolder & val) { myPrimnumattrib = val; }
1373  {
1374  SOP_Node *thissop = cookparms.getNode();
1375  if (!thissop) return getPrimnumattrib();
1377  OP_Utils::evalOpParm(result, thissop, "primnumattrib", cookparms.getCookTime(), 0);
1378  return result;
1379  }
1380  bool getUseprimuvwattrib() const { return myUseprimuvwattrib; }
1381  void setUseprimuvwattrib(bool val) { myUseprimuvwattrib = val; }
1382  bool opUseprimuvwattrib(const SOP_NodeVerb::CookParms &cookparms) const
1383  {
1384  SOP_Node *thissop = cookparms.getNode();
1385  if (!thissop) return getUseprimuvwattrib();
1386  bool result;
1387  OP_Utils::evalOpParm(result, thissop, "useprimuvwattrib", cookparms.getCookTime(), 0);
1388  return result;
1389  }
1390  const UT_StringHolder & getPrimuvwattrib() const { return myPrimuvwattrib; }
1391  void setPrimuvwattrib(const UT_StringHolder & val) { myPrimuvwattrib = val; }
1393  {
1394  SOP_Node *thissop = cookparms.getNode();
1395  if (!thissop) return getPrimuvwattrib();
1397  OP_Utils::evalOpParm(result, thissop, "primuvwattrib", cookparms.getCookTime(), 0);
1398  return result;
1399  }
1400  bool getGetptattribs() const { return myGetptattribs; }
1401  void setGetptattribs(bool val) { myGetptattribs = val; }
1402  bool opGetptattribs(const SOP_NodeVerb::CookParms &cookparms) const
1403  {
1404  SOP_Node *thissop = cookparms.getNode();
1405  if (!thissop) return getGetptattribs();
1406  bool result;
1407  OP_Utils::evalOpParm(result, thissop, "getptattribs", cookparms.getCookTime(), 0);
1408  return result;
1409  }
1410  const UT_StringHolder & getPtattribnames() const { return myPtattribnames; }
1411  void setPtattribnames(const UT_StringHolder & val) { myPtattribnames = val; }
1413  {
1414  SOP_Node *thissop = cookparms.getNode();
1415  if (!thissop) return getPtattribnames();
1417  OP_Utils::evalOpParm(result, thissop, "ptattribnames", cookparms.getCookTime(), 0);
1418  return result;
1419  }
1420  const UT_StringHolder & getVertexattribnames() const { return myVertexattribnames; }
1421  void setVertexattribnames(const UT_StringHolder & val) { myVertexattribnames = val; }
1423  {
1424  SOP_Node *thissop = cookparms.getNode();
1425  if (!thissop) return getVertexattribnames();
1427  OP_Utils::evalOpParm(result, thissop, "vertexattribnames", cookparms.getCookTime(), 0);
1428  return result;
1429  }
1430  const UT_StringHolder & getPrimitiveattribnames() const { return myPrimitiveattribnames; }
1431  void setPrimitiveattribnames(const UT_StringHolder & val) { myPrimitiveattribnames = val; }
1433  {
1434  SOP_Node *thissop = cookparms.getNode();
1435  if (!thissop) return getPrimitiveattribnames();
1437  OP_Utils::evalOpParm(result, thissop, "primitiveattribnames", cookparms.getCookTime(), 0);
1438  return result;
1439  }
1440  const UT_StringHolder & getDetailattribnames() const { return myDetailattribnames; }
1441  void setDetailattribnames(const UT_StringHolder & val) { myDetailattribnames = val; }
1443  {
1444  SOP_Node *thissop = cookparms.getNode();
1445  if (!thissop) return getDetailattribnames();
1447  OP_Utils::evalOpParm(result, thissop, "detailattribnames", cookparms.getCookTime(), 0);
1448  return result;
1449  }
1450  bool getGethitgroups() const { return myGethitgroups; }
1451  void setGethitgroups(bool val) { myGethitgroups = val; }
1452  bool opGethitgroups(const SOP_NodeVerb::CookParms &cookparms) const
1453  {
1454  SOP_Node *thissop = cookparms.getNode();
1455  if (!thissop) return getGethitgroups();
1456  bool result;
1457  OP_Utils::evalOpParm(result, thissop, "gethitgroups", cookparms.getCookTime(), 0);
1458  return result;
1459  }
1460  const UT_StringHolder & getPtgroupnames() const { return myPtgroupnames; }
1461  void setPtgroupnames(const UT_StringHolder & val) { myPtgroupnames = val; }
1463  {
1464  SOP_Node *thissop = cookparms.getNode();
1465  if (!thissop) return getPtgroupnames();
1467  OP_Utils::evalOpParm(result, thissop, "ptgroupnames", cookparms.getCookTime(), 0);
1468  return result;
1469  }
1470  const UT_StringHolder & getVertexgroupnames() const { return myVertexgroupnames; }
1471  void setVertexgroupnames(const UT_StringHolder & val) { myVertexgroupnames = val; }
1473  {
1474  SOP_Node *thissop = cookparms.getNode();
1475  if (!thissop) return getVertexgroupnames();
1477  OP_Utils::evalOpParm(result, thissop, "vertexgroupnames", cookparms.getCookTime(), 0);
1478  return result;
1479  }
1480  const UT_StringHolder & getPrimitivegroupnames() const { return myPrimitivegroupnames; }
1481  void setPrimitivegroupnames(const UT_StringHolder & val) { myPrimitivegroupnames = val; }
1483  {
1484  SOP_Node *thissop = cookparms.getNode();
1485  if (!thissop) return getPrimitivegroupnames();
1487  OP_Utils::evalOpParm(result, thissop, "primitivegroupnames", cookparms.getCookTime(), 0);
1488  return result;
1489  }
1490 
1491 private:
1492  UT_StringHolder myGroup;
1493  int64 myEntity;
1494  UT_StringHolder myCollision;
1495  int64 myMethod;
1496  int64 myDirMethod;
1497  UT_Vector3D myDir;
1498  UT_StringHolder myDirAttrib;
1499  int64 myDirectiontype;
1500  int64 myBidirectionalresult;
1501  bool myDotrans;
1502  bool myShowguide;
1503  bool myLookfar;
1504  fpreal64 myRtolerance;
1505  fpreal64 myScale;
1506  fpreal64 myLift;
1507  fpreal64 myBias;
1508  bool myMaxraydistcheck;
1509  fpreal64 myMaxraydist;
1510  int64 mySample;
1511  fpreal64 myJitter;
1512  int64 mySeed;
1513  int64 myCombinetype;
1514  bool myPutnml;
1515  bool myPutdist;
1516  bool myNewgrp;
1517  UT_StringHolder myHitgrp;
1518  bool myUseprimnumattrib;
1519  UT_StringHolder myPrimnumattrib;
1520  bool myUseprimuvwattrib;
1521  UT_StringHolder myPrimuvwattrib;
1522  bool myGetptattribs;
1523  UT_StringHolder myPtattribnames;
1524  UT_StringHolder myVertexattribnames;
1525  UT_StringHolder myPrimitiveattribnames;
1526  UT_StringHolder myDetailattribnames;
1527  bool myGethitgroups;
1528  UT_StringHolder myPtgroupnames;
1529  UT_StringHolder myVertexgroupnames;
1530  UT_StringHolder myPrimitivegroupnames;
1531 
1532 };
static void saveData(std::ostream &os, int64 v)
type
Definition: core.h:556
fpreal64 getBias() const
static void loadData(UT_IStream &is, UT_Vector3D &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix4D &value) override
void setPrimitiveattribnames(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Vector2I &v)
bool getUseprimnumattrib() const
void setLift(fpreal64 val)
int int32
Definition: SYS_Types.h:39
SOP_Node * getNode() const
Definition: SOP_NodeVerb.h:347
void setHitgrp(const UT_StringHolder &val)
UT_StringHolder opCollision(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix4D &value) const override
const UT_StringHolder & getPrimitivegroupnames() const
void doGetParmValue(TempIndex idx, TempIndex instance, T &value) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector2D &value) const override
const UT_StringHolder & getDetailattribnames() const
fpreal64 getJitter() const
bool opLookfar(const SOP_NodeVerb::CookParms &cookparms) const
void setVertexattribnames(const UT_StringHolder &val)
void setPtgroupnames(const UT_StringHolder &val)
UT_StringHolder opPrimuvwattrib(const SOP_NodeVerb::CookParms &cookparms) const
exint bread(int32 *buffer, exint asize=1)
static void loadData(UT_IStream &is, UT_Vector2D &v)
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:63
static void loadData(UT_IStream &is, int64 &v)
GLsizei const GLfloat * value
Definition: glcorearb.h:824
const UT_StringHolder & getVertexgroupnames() const
void setCombinetype(Combinetype val)
DirMethod opDirMethod(const SOP_NodeVerb::CookParms &cookparms) const
Method opMethod(const SOP_NodeVerb::CookParms &cookparms) const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix3D &value) const override
void setPrimitivegroupnames(const UT_StringHolder &val)
void setBias(fpreal64 val)
void setPutdist(bool val)
UT_StringHolder opPrimitivegroupnames(const SOP_NodeVerb::CookParms &cookparms) const
const OP_Context & context() const
Definition: OP_NodeParms.h:97
static void saveData(std::ostream &os, PRM_DataItemHandle s)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector3D &value) override
bool opShowguide(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 loadData(UT_IStream &is, UT_StringHolder &v)
SYS_FORCE_INLINE const char * buffer() const
DirMethod getDirMethod() const
void setMaxraydist(fpreal64 val)
fpreal64 opBias(const SOP_NodeVerb::CookParms &cookparms) const
GLdouble s
Definition: glad.h:3009
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector3D &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector4D &value) override
An output stream object that owns its own string buffer storage.
**But if you need a result
Definition: thread.h:622
static void loadData(UT_IStream &is, UT_Vector4D &v)
void setDotrans(bool val)
static void loadData(UT_IStream &is, UT_Matrix3D &v)
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Vector2D &value) override
bool getShowguide() const
UT_StringHolder opPtattribnames(const SOP_NodeVerb::CookParms &cookparms) 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.
const UT_StringHolder & getDirAttrib() const
fpreal64 getScale() const
bool operator==(const SOP_RayParms &src) const
void setDirMethod(DirMethod val)
void setGroup(const UT_StringHolder &val)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector4.h:491
Combinetype getCombinetype() const
const UT_StringHolder & getHitgrp() const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix3D &value) override
double fpreal64
Definition: SYS_Types.h:201
fpreal64 opScale(const SOP_NodeVerb::CookParms &cookparms) const
UT_SharedPtr< const PRM_DataItem > PRM_DataItemHandle
Definition: APEX_Include.h:55
void doSetParmValue(TempIndex idx, TempIndex instance, const T &value)
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector2.h:423
void setSample(int64 val)
bool getDotrans() const
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
Definition: Dimensions.h:137
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Matrix2D &value) const override
void setVertexgroupnames(const UT_StringHolder &val)
void setLookfar(bool val)
UT_StringHolder opPrimnumattrib(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 opMaxraydist(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_SharedPtr< UT_Ramp > &value) override
bool opGethitgroups(const SOP_NodeVerb::CookParms &cookparms) const
Entity getEntity() const
void setNewgrp(bool val)
fpreal64 getLift() const
Entity opEntity(const SOP_NodeVerb::CookParms &cookparms) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_StringHolder &value) override
const UT_StringHolder & getVertexattribnames() const
void getNestParmValue(TempIndex idx, TempIndex instance, exint &value) const override
exint length() const
void setCollision(const UT_StringHolder &val)
static void loadData(UT_IStream &is, UT_Matrix2D &v)
SYS_FORCE_INLINE const char * buffer() const
void setMaxraydistcheck(bool val)
std::shared_ptr< T > UT_SharedPtr
Wrapper around std::shared_ptr.
Definition: UT_SharedPtr.h:36
void getNestParmValue(TempIndex idx, TempIndex instance, UT_Vector4D &value) const override
void setNestParmValue(TempIndex idx, TempIndex instance, const fpreal &value) override
constexpr SYS_FORCE_INLINE T & z() noexcept
Definition: UT_Vector4.h:495
void setMethod(Method val)
void setRtolerance(fpreal64 val)
Combinetype opCombinetype(const SOP_NodeVerb::CookParms &cookparms) const
bool opDotrans(const SOP_NodeVerb::CookParms &cookparms) const
int64 getSeed() const
fpreal64 opRtolerance(const SOP_NodeVerb::CookParms &cookparms) const
static void loadData(UT_IStream &is, UT_Vector3I &v)
const OP_GraphProxy * graph() const
Definition: OP_NodeParms.h:94
#define SYS_FORCE_INLINE
Definition: SYS_Inline.h:45
static void saveData(std::ostream &os, UT_Vector3D v)
bool opNewgrp(const SOP_NodeVerb::CookParms &cookparms) const
bool opUseprimuvwattrib(const SOP_NodeVerb::CookParms &cookparms) const
void setUseprimnumattrib(bool val)
void setPutnml(bool val)
const char * getNestParmName(TempIndex fieldnum) const override
UT_StringHolder opPrimitiveattribnames(const SOP_NodeVerb::CookParms &cookparms) const
UT_Vector3D getDir() const
const UT_StringHolder & getPrimitiveattribnames() const
Bidirectionalresult getBidirectionalresult() const
Method getMethod() const
long long int64
Definition: SYS_Types.h:116
void loadFromOpSubclass(const LoadParms &loadparms) override
void setDetailattribnames(const UT_StringHolder &val)
void setUseprimuvwattrib(bool val)
int64 getSample() const
void setGethitgroups(bool val)
static void saveData(std::ostream &os, UT_Matrix4D v)
UT_Vector3T< fpreal64 > UT_Vector3D
void setEntity(Entity val)
bool getLookfar() const
SYS_FORCE_INLINE UT_StringHolder getToken(Entity enum_value)
Definition: SOP_Ray.proto.h:32
bool getGethitgroups() const
void getNestParmValue(TempIndex idx, TempIndex instance, UT_SharedPtr< UT_Ramp > &value) const override
UT_StringHolder opGroup(const SOP_NodeVerb::CookParms &cookparms) const
virtual void evalOpParm(int64 &v, NodeIdx node, const char *parmname, fpreal time, DEP_MicroNode *depnode) const =0
UT_StringHolder opPtgroupnames(const SOP_NodeVerb::CookParms &cookparms) const
bool getUseprimuvwattrib() const
void setGetptattribs(bool val)
void setShowguide(bool val)
bool opGetptattribs(const SOP_NodeVerb::CookParms &cookparms) const
void saveBinary(std::ostream &os) const
Save string to binary stream.
Definition: UT_String.h:303
static void saveData(std::ostream &os, UT_Vector4D v)
GT_API const UT_StringHolder version
ParmType getNestParmType(TempIndex fieldnum) const override
void getNestParmValue(TempIndex idx, TempIndex instance, UT_StringHolder &value) const override
bool opMaxraydistcheck(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, UT_StringHolder s)
UT_Vector3D opDir(const SOP_NodeVerb::CookParms &cookparms) const
void setDirAttrib(const UT_StringHolder &val)
void setJitter(fpreal64 val)
void setScale(fpreal64 val)
void setNestParmValue(TempIndex idx, TempIndex instance, const PRM_DataItemHandle &value) override
void setBidirectionalresult(Bidirectionalresult val)
fpreal64 opJitter(const SOP_NodeVerb::CookParms &cookparms) const
fpreal64 getMaxraydist() const
static void saveData(std::ostream &os, UT_Matrix3D v)
void setPrimuvwattrib(const UT_StringHolder &val)
Directiontype opDirectiontype(const SOP_NodeVerb::CookParms &cookparms) const
bool isParmColorRamp(exint idx) const override
void setSeed(int64 val)
UT_StringHolder opVertexgroupnames(const SOP_NodeVerb::CookParms &cookparms) const
void save(std::ostream &os) const
void getNestParmValue(TempIndex idx, TempIndex instance, fpreal &value) const override
void setPrimnumattrib(const UT_StringHolder &val)
fpreal64 fpreal
Definition: SYS_Types.h:278
static void loadData(UT_IStream &is, PRM_DataItemHandle &v)
fpreal64 opLift(const SOP_NodeVerb::CookParms &cookparms) const
DEP_MicroNode * depnode() const
Definition: OP_NodeParms.h:99
bool getNewgrp() const
exint getNestNumParms(TempIndex idx) const override
LeafData & operator=(const LeafData &)=delete
Utility class for containing a color ramp.
Definition: UT_Ramp.h:96
void setDir(UT_Vector3D val)
static void saveData(std::ostream &os, UT_Matrix2D v)
constexpr SYS_FORCE_INLINE T & w() noexcept
Definition: UT_Vector4.h:497
static int version()
GLuint GLfloat * val
Definition: glcorearb.h:1608
virtual UT_StringHolder baseGetSignature() const
Definition: OP_NodeParms.h:294
Vec3< typename MatType::value_type > getScale(const MatType &mat)
Return a Vec3 representing the lengths of the passed matrix's upper 3×3's rows.
Definition: Mat.h:633
UT_StringHolder opDetailattribnames(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opVertexattribnames(const SOP_NodeVerb::CookParms &cookparms) const
UT_StringHolder opHitgrp(const SOP_NodeVerb::CookParms &cookparms) const
#define SOP_API
Definition: SOP_API.h:10
const UT_StringHolder & getPtgroupnames() const
static void loadData(UT_IStream &is, bool &v)
const UT_StringHolder & getPtattribnames() const
fpreal getCookTime() const
Definition: SOP_NodeVerb.h:372
void setPtattribnames(const UT_StringHolder &val)
void buildFromOp(const OP_GraphProxy *graph, exint nodeidx, fpreal time, DEP_MicroNode *depnode)
void setDirectiontype(Directiontype val)
bool getMaxraydistcheck() const
static void loadData(UT_IStream &is, UT_SharedPtr< UT_Ramp > &v)
const UT_StringHolder & getGroup() const
fpreal64 getRtolerance() const
const char * findChar(int c) const
Definition: UT_String.h:1401
#define UT_ASSERT(ZZ)
Definition: UT_Assert.h:156
UT_StringHolder opDirAttrib(const SOP_NodeVerb::CookParms &cookparms) const
bool getGetptattribs() const
void setNestParmValue(TempIndex idx, TempIndex instance, const exint &value) override
static void saveData(std::ostream &os, UT_SharedPtr< UT_Ramp > s)
void copyFrom(const OP_NodeParms *src) override
GLboolean r
Definition: glcorearb.h:1222
Bidirectionalresult opBidirectionalresult(const SOP_NodeVerb::CookParms &cookparms) const
bool getPutnml() const
const UT_StringHolder & getCollision() const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector3.h:665
static void saveData(std::ostream &os, UT_Vector2D v)
bool getPutdist() const
static void saveData(std::ostream &os, fpreal64 v)
const UT_StringHolder & getPrimuvwattrib() const
bool operator!=(const SOP_RayParms &src) const
void setNestParmValue(TempIndex idx, TempIndex instance, const UT_Matrix2D &value) override
virtual bool isDirect() const =0
Direct proxies mirror actual nodes:
bool opUseprimnumattrib(const SOP_NodeVerb::CookParms &cookparms) const
bool load(UT_IStream &is)
static void loadData(UT_IStream &is, fpreal64 &v)
static void loadData(UT_IStream &is, UT_Matrix4D &v)
bool opPutnml(const SOP_NodeVerb::CookParms &cookparms) const
constexpr SYS_FORCE_INLINE T & y() noexcept
Definition: UT_Vector2.h:425
SYS_FORCE_INLINE bool isstring() const
bool opPutdist(const SOP_NodeVerb::CookParms &cookparms) const
SYS_FORCE_INLINE void strncpy(const char *src, exint maxlen)
const UT_StringHolder & getPrimnumattrib() const
int64 opSeed(const SOP_NodeVerb::CookParms &cookparms) const
int64 opSample(const SOP_NodeVerb::CookParms &cookparms) const
static void saveData(std::ostream &os, bool v)
void getNestParmValue(TempIndex idx, TempIndex instance, PRM_DataItemHandle &value) const override
static void loadData(UT_IStream &is, UT_Vector4I &v)
GLenum src
Definition: glcorearb.h:1793
constexpr SYS_FORCE_INLINE T & x() noexcept
Definition: UT_Vector3.h:663
Directiontype getDirectiontype() const